VS Code WinForms中如何添加PdfMerger程序集引用?
解决iTextSharp合并PDF时
PdfMerger报错问题 核心问题
iTextSharp(iText 5.x的.NET版本)库中不存在PdfMerger类,你写的代码调用了未定义的类型,这是报错的根本原因。
方案1:使用iTextSharp原生API实现PDF合并
如果你坚持使用已安装的iTextSharp包,可通过PdfCopy或PdfSmartCopy类完成合并,以下是按钮点击事件的完整示例代码:
using System.Collections.Generic; using System.IO; using iTextSharp.text; using iTextSharp.text.pdf; private void btnMergePdfs_Click(object sender, EventArgs e) { // 替换为你要合并的PDF文件路径 List<string> sourcePdfs = new List<string> { @"D:\docs\file1.pdf", @"D:\docs\file2.pdf", @"D:\docs\file3.pdf" }; // 合并后输出路径 string mergedPdfPath = @"D:\docs\merged_result.pdf"; using (FileStream outputStream = new FileStream(mergedPdfPath, FileMode.Create)) { Document mergedDoc = new Document(); PdfCopy pdfCopy = new PdfCopy(mergedDoc, outputStream); mergedDoc.Open(); foreach (string pdfPath in sourcePdfs) { using (PdfReader pdfReader = new PdfReader(pdfPath)) { // 逐页添加到合并文档 for (int pageNum = 1; pageNum <= pdfReader.NumberOfPages; pageNum++) { pdfCopy.AddPage(pdfCopy.GetImportedPage(pdfReader, pageNum)); } } } mergedDoc.Close(); } }
方案2:升级到iText7使用PdfMerger
如果想继续使用PdfMerger类,需要卸载现有iTextSharp包,安装iText7的NuGet包(包名为itext7),然后用以下代码实现合并:
using System.Collections.Generic; using System.IO; using iText.Kernel.Pdf; private void btnMergePdfs_Click(object sender, EventArgs e) { List<string> sourcePdfs = new List<string> { @"D:\docs\file1.pdf", @"D:\docs\file2.pdf" }; string mergedPdfPath = @"D:\docs\merged_result.pdf"; using (FileStream outputStream = new FileStream(mergedPdfPath, FileMode.Create)) { PdfWriter writer = new PdfWriter(outputStream); PdfDocument outputPdf = new PdfDocument(writer); PdfMerger merger = new PdfMerger(outputPdf); foreach (string pdfPath in sourcePdfs) { using (PdfDocument inputPdf = new PdfDocument(new PdfReader(pdfPath))) { // 合并当前PDF的所有页面 merger.Merge(inputPdf, 1, inputPdf.GetNumberOfPages()); } } outputPdf.Close(); } }
内容的提问来源于stack exchange,提问作者gimmealife
相关产品推荐
相关产品推荐

