You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 21:53:09