结合PDF c#

时间:2008-09-16 16:01:41

标签: c# pdf-generation

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

7 个答案:

答案 0 :(得分:22)

我认为你不能。 Opensource组件PDFSharp具有该功能,并且具有良好的source code sample on file combining

答案 1 :(得分:6)

.NET Framework不包含修改/创建PDF的功能。您需要第三方组件才能完成您的目标。

答案 2 :(得分:5)

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

答案 3 :(得分:4)

AFAIK C#没有内置的处理PDF的支持,所以如果不使用第三方组件或COTS库,就无法完成。

关于图书馆,有无数的可能性。仅举几点:

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

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

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

答案 4 :(得分:3)

我认为.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;
    }
}

答案 5 :(得分:0)

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

答案 6 :(得分:0)

ITextSharp是要走的路