合并PDF c#

Posted

技术标签:

【中文标题】合并PDF c#【英文标题】:Combine PDFs c# 【发布时间】:2010-09-09 14:12:33 【问题描述】:

如何在没有第三方组件的情况下将多个 PDF 合并为一个 PDF?

【问题讨论】:

【参考方案1】:

我不认为你可以。 开源组件 PDFSharp 具有该功能,以及一个不错的 source code sample on file combining

【讨论】:

我知道这已经过时了,但我遵循了这个答案并发现 PDFSharp 仍然没有实现对更现代版本的 PDF 的支持......你可能需要跳过箍来让它适用于所有 PDF。在加入之前请参阅:forum.pdfsharp.net/viewtopic.php?f=2&t=693【参考方案2】:

.NET Framework 不包含修改/创建 PDF 的功能。您需要一个 3rd 方组件来完成您正在寻找的东西。

【讨论】:

【参考方案3】:

正如其他人所说,没有内置的东西可以完成这项任务。将iTextSharp 与此example code 一起使用。

【讨论】:

我认为有人应该始终注意 iTextSharp 使用 AGPL 许可证,这要求您发布源代码以及适当记录 iTextSharps 的使用情况。不过,他们确实有商业许可。小心你如何使用它!【参考方案4】:

AFAIK C# 没有对处理 PDF 的内置支持,因此如果不使用 3rd 方组件或 COTS 库,就无法完成您的要求。

关于图书馆,有无数种可能性。仅指出几点:

http://csharp-source.net/open-source/pdf-libraries

http://www.codeproject.com/KB/graphics/giospdfnetlibrary.aspx

http://www.pdftron.com/net/index.html

【讨论】:

【参考方案5】:

我不认为 .NET Framework 包含类似的库。我使用 iTextsharp 和 c# 来组合 pdf 文件。我认为 iTextsharp 是最简单的方法。这是我使用的代码。

string[] lstFiles=new string[3];
    lstFiles[0]=@"C:/pdf/1.pdf";
    lstFiles[1]=@"C:/pdf/2.pdf";
    lstFiles[2]=@"C:/pdf/3.pdf";

    PdfReader reader = null;
    Document sourceDocument = null;
    PdfCopy pdfCopyProvider = null;
    PdfImportedPage importedPage;
    string outputPdfPath=@"C:/pdf/new.pdf";


    sourceDocument = new Document();
    pdfCopyProvider = new PdfCopy(sourceDocument, new System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create));

    //Open the output file
    sourceDocument.Open();

    try
    
        //Loop through the files list
        for (int f = 0; f < lstFiles.Length-1; f++)
        
            int pages =get_pageCcount(lstFiles[f]);

            reader = new PdfReader(lstFiles[f]);
            //Add pages of current file
            for (int i = 1; i <= pages; i++)
            
                importedPage = pdfCopyProvider.GetImportedPage(reader, i);
                pdfCopyProvider.AddPage(importedPage);
            

            reader.Close();
         
        //At the end save the output file
        sourceDocument.Close();
    
    catch (Exception ex)
    
        throw ex;
    


private int get_pageCcount(string file)

    using (StreamReader sr = new StreamReader(File.OpenRead(file)))
    
        Regex regex = new Regex(@"/Type\s*/Page[^s]");
        MatchCollection matches = regex.Matches(sr.ReadToEnd());

        return matches.Count;
    

【讨论】:

这是正确的还是有帮助的请采纳答案 谢谢!在我需要时保存最后一分钟。它也很快!【参考方案6】:

ITextSharp 是要走的路

【讨论】:

【参考方案7】:

虽然已经说过,但您不能使用 .NET Framework 的内置库来操作 PDF。不过我可以推荐iTextSharp,它是Java iText 的.NET 端口。我玩过它,发现它是一个非常易于使用的工具。

【讨论】:

以上是关于合并PDF c#的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C# 合并包含所有者密码的 PDF 文档

c# Word-AddIn 将 activeDocument 转换为虚拟 PDF 并将它们合并为一个 PDF 文档

将 Azure Blob (PDF) 合并到一个 Blob 中并通过 C# ASP.NET 下载给用户

C#/VB.NET 合并PDF页面

在 C# 中执行邮件合并时 LibreOffice 崩溃

C#中如何将两个项目合并到一个项目中