C#怎么操作PDF合并拆分 C#如何用代码将多个PDF合并成一个或拆分成多个文件【工具】

张开发
2026/4/17 0:50:57 15 分钟阅读

分享文章

C#怎么操作PDF合并拆分 C#如何用代码将多个PDF合并成一个或拆分成多个文件【工具】
pPdfPig 是 C# 中最稳的 PDF 合并/拆分方案无许可证风险、API 清晰iTextSharp v4.x 不支持新标准易生成损坏文件。/p用 PdfPig 合并 PDF 最稳别碰 iTextSharp 旧版直接说结论C# 做 PDF 合并/拆分 PdfPig 是目前最省心、无许可证风险、API 清晰的开源方案 iTextSharp v4.x虽老但有人还在用它默认不支持新 PDF 标准如 AES-256 加密、流式对象合并后常报 PdfReader not initialized 或生成损坏文件。实操建议 PdfPig 安装只需 dotnet add package PdfPig .NET 5 原生支持无需额外依赖合并时不要用“追加流”方式比如把二进制直接拼接必须通过 PdfDocumentBuilder 逐页导入——否则书签、字体、交叉引用表全丢如果源 PDF 有密码 PdfPig 支持传入口令 PdfDocument.Open(path, new PdfPasswordProvider(123)) 但只支持用户密码User Password不支持所有者密码Owner Password解密注意页码偏移 builder.AddPagesFromDocument(doc, 0, 2) 表示取前两页索引从 0 开始不是“第 0 到第 2 页”拆分 PDF 按页或按范围关键在 PdfDocumentBuilder 的生命周期管理常见错误是反复复用同一个 PdfDocumentBuilder 实例去写多个输出文件结果只有最后一个文件能打开——因为 builder 内部缓冲区没清空或底层 FileStream 被提前关闭。正确做法每次拆分都新建独立 PdfDocumentBuilder 新 FileStream 别共用按页拆遍历 sourceDoc.GetPages() 每页单独建 builder、add page、save按范围拆如每 5 页一个文件用 GetPages().Skip(x).Take(5) 提取页面集合再统一 add 进 builder别用 File.Copy() 拆单页 PDF——PDF 不是纯二进制拼图页对象可能共享资源字体、图像流直接复制会断引用中文乱码先确认字体是否嵌入别急着换库合并后中文变方块或空白大概率不是代码问题而是源 PDF 里中文字体没嵌入或用了非标准编码如 GBK 而非 Unicode。 PdfPig 默认不替换字体它照搬原页面的字体字典。 跃问 跃问是由阶跃星辰开发的免费AI智能问答助手随时帮你智能搜索、高效阅读、识图理解、和你畅聊感兴趣的话题。

更多文章