Объединить PDF-файлы C#

Как я могу объединить несколько PDF-файлов в один PDF без стороннего компонента?

7 ответов

Я не думаю, что ты можешь. Компонент с открытым исходным кодом PDFSharp обладает такой функциональностью и хорошим примером исходного кода при объединении файлов.

.NET Framework не содержит возможности изменять / создавать PDF-файлы. Вам нужен сторонний компонент, чтобы выполнить то, что вы ищете.

Как уже говорили другие, для выполнения этой задачи нет ничего встроенного. Используйте iTextSharp с этим примером кода.

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

Я не думаю, что.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;
    }
}

Хотя это уже было сказано, вы не можете манипулировать PDF-файлами с помощью встроенных библиотек.NET Framework. Однако я могу порекомендовать iTextSharp, который является.NET-портом Java iText. Я поиграл с этим и обнаружил, что это очень простой в использовании инструмент.

ITextSharp - это путь

Другие вопросы по тегам