.NET8实现PDF合并的示例代码

2024-03-01 0 798
目录
  • 前言
  • 一、itext7
  • 二、PdfSharpCore
  • 三、Aspose.PDF
  • 四、Spire.PDF

前言

在.NET 8中使用itext7需安装 itext7 和itext7.bouncy-castle-fips-adapter 两个Nuget包,或者使用Aspose.PDF、PdfSharpCore、Spire.PDF任意一个第三方包就行

对比:

第三方包是否开源是否收费itext7是不收费,免费使用没有水印PdfSharpCore是不收费,免费使用没有水印Spire.PDF否是,可以免费使用但有水印Aspose.PDF否是,可以免费使用但有水印

安装如下Nuget的包

<ItemGroup>
<PackageReference Include=\”Aspose.PDF\” Version=\”23.11.1\” />
<PackageReference Include=\”itext7\” Version=\”8.0.2\” />
<PackageReference Include=\”itext7.bouncy-castle-fips-adapter\” Version=\”8.0.2\” />
<PackageReference Include=\”PdfSharpCore\” Version=\”1.3.62\” />
<PackageReference Include=\”Spire.PDF\” Version=\”9.12.0\” />
</ItemGroup>

项目结构示意图

.NET8实现PDF合并的示例代码

一、itext7

using iText.Kernel.Pdf;
using iText.Kernel.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PdfTest.PdfHelpers
{
public class iText7Helper
{
// https://blog.csdn.net/m0_47619208/article/details/130725907
/// <summary>
/// 合并多个PDF文档
/// 添加NuGet包引用:添加itext7和itext7.bouncy-castle-adapter,后者必须进行添加,否则会在运行报错。
/// NuGet包为iText7,该库满足跨平台需求
/// https://itextpdf.com/
/// https://itextpdf.com/itext-suite-net-c
/// </summary>
/// <param name=\”fileList\”></param>
/// <param name=\”outFile\”></param>
/// <returns></returns>
public static Task MergePdf(string[] fileList, string outFile)
{
using PdfWriter writer = new(outFile);
using PdfDocument pdf = new(writer);
PdfMerger merger = new(pdf);
for (int i = 0; i < fileList.Length; i++)
{
PdfReader reader = new(fileList[i]);
using PdfDocument pdfDocument = new(reader);
merger.Merge(pdfDocument, 1, pdfDocument.GetNumberOfPages());
}
merger.Close();
return Task.CompletedTask;
}
}
}

二、PdfSharpCore

using PdfSharpCore.Pdf;
using PdfSharpCore.Pdf.IO;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PdfTest.PdfHelpers
{
public class PdfSharpTool
{
// https://github.com/ststeiger/PdfSharpCore

public static void PdfSharpCoreMerge(string[] files, string outFile)
{
using PdfDocument outPdfFile = new PdfDocument();
foreach (var file in files)
{
using PdfDocument pdfFile = PdfReader.Open(file, PdfDocumentOpenMode.Import);

foreach (var pdfPage in pdfFile.Pages)
{
outPdfFile.AddPage(pdfPage);
}
}
outPdfFile.Save(outFile);
}

}
}

三、Aspose.PDF

using Aspose.Pdf.Facades;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PdfTest.PdfHelpers
{
internal class AsposePdfHelper
{
//https://blog.aspose.com/zh/pdf/merge-multiple-pdf-files-in-csharp-net/
//收费
public static void Merge(string[] filesArray, string outFile)
{
// 创建 PdfFileEditor 对象
PdfFileEditor pdfEditor = new PdfFileEditor();
// 合并文件
//pdfEditor.Concatenate(\”file1.pdf\”, \”file2.pdf\”, \”merged.pdf\”);
// 合并文件
pdfEditor.Concatenate(filesArray, outFile);

}

public static void MergeStream(FileStream[] streamArray, string outFile)
{
// 创建 PdfFileEditor 对象
PdfFileEditor pdfEditor = new PdfFileEditor();
// 输出流
//FileStream outputStream = new FileStream(\”Merged.pdf\”, FileMode.Create);
FileStream outputStream = new FileStream(outFile, FileMode.Create);
//// 输入流
//FileStream inputStream1 = new FileStream(\”file1.pdf\”, FileMode.Open);
//FileStream inputStream2 = new FileStream(\”file2.pdf\”, FileMode.Open);
//// 合并文件
//pdfEditor.Concatenate(inputStream1, inputStream2, outputStream);

// 创建流数组
//FileStream[] streamArray = new FileStream[3];
//streamArray[0] = new FileStream(\”file1.pdf\”, FileMode.Open);
//streamArray[1] = new FileStream(\”file2.pdf\”, FileMode.Open);
//streamArray[2] = new FileStream(\”file3.pdf\”, FileMode.Open);
// 合并文件
pdfEditor.Concatenate(streamArray, outputStream);

}

}
}

四、Spire.PDF

using Spire.Pdf;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PdfTest.PdfHelpers
{
public class SpirePdfHelper
{
//https://www.e-iceblue.com/Introduce/pdf-for-net-introduce.html
//https://www.e-iceblue.com/Tutorials/Spire.PDF/Spire.PDF-Program-Guide/Convert-HTML-to-PDF-Customize-HTML-to-PDF-Conversion-by-Yourself.html
//https://www.cnblogs.com/dongweian/p/14305928.html
//有水印

/// <summary>
/// 合并PDF文件
/// </summary>
/// <param name=\”files\”>待合并文件列表</param>
/// <param name=\”outFile\”>合并生成的文件名称</param>
public static void SpirePdfMerge(string[] files, string outFile)
{
var doc = PdfDocument.MergeFiles(files);
doc.Save(outFile, FileFormat.PDF);
}

/// <summary>
/// 按每页拆分PDF文件
/// </summary>
/// <param name=\”inFile\”>待拆分PDF文件名称</param>
public static void SpirePdfSplit(string inFile)
{
var doc = new PdfDocument(inFile);
doc.Split(\”SpirePdf_拆分-{0}.pdf\”);
doc.Close();
}

}
}

在控制台上调用

using PdfTest.PdfHelpers;

namespace PdfTest
{
internal class Program
{
static void Main(string[] args)
{
       // 文件数组索引在前面的后,合并后的PDF,页面也在前面
string [] files = Directory.GetFiles(\”Merge\”);
#region Spire.Pdf
//SpirePdfHelper.SpirePdfMerge(files, \”SpirePdfMerge.pdf\”);
//Console.WriteLine(\”使用 Spire.Pdf 合并文件完成…\”);
#endregion

#region PdfSharpCore
//PdfSharpTool.PdfSharpCoreMerge(files, \”PdfSharpCoreMerge.pdf\”);
//Console.WriteLine(\”使用 PdfSharpCore 合并文件完成…\”);
#endregion

#region iText7
//iText7Helper.MergePdf(files, \”iText7PdfMerge.pdf\”);
//Console.WriteLine(\”使用 iText7 合并文件完成…\”);
#endregion

#region AsposePdf
AsposePdfHelper.Merge(files, \”AsposePdfMerge.pdf\”);
Console.WriteLine(\”使用 AsposePdf 合并文件完成…\”);
#endregion

Console.ReadKey();
}
}
}

以上就是.NET8实现PDF合并的示例代码的详细内容,更多关于.NET合并PDF的资料请关注悠久资源网其它相关文章!

您可能感兴趣的文章:

  • C#实现pdf导出 .Net导出pdf文件
  • .Net 对于PDF生成以及各种转换的操作
  • C#/VB.NET创建PDF文档的示例代码
  • C#/VB.NET实现在PDF文档中插入,替换或删除图片
  • C#/VB.NET实现在PDF文档中创建表格

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 ASP.NET .NET8实现PDF合并的示例代码 https://www.u-9.cn/biancheng/aspnet/181643.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务