Объединить PDF-файлы c # - PullRequest
19 голосов
/ 16 сентября 2008

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

Ответы [ 7 ]

22 голосов
/ 16 сентября 2008

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

6 голосов
/ 16 сентября 2008

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

5 голосов
/ 16 сентября 2008

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

4 голосов
/ 16 сентября 2008

AFAIK C # не имеет встроенной поддержки обработки PDF, поэтому то, что вы просите, не может быть выполнено без использования стороннего компонента или библиотеки COTS.

Что касается библиотек, существует множество возможностей. Просто указать на несколько:

http://csharp -source.net / с открытым исходным кодом / PDF-библиотека

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

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

3 голосов
/ 03 марта 2014

Я не думаю, что .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;
    }
}
0 голосов
/ 16 сентября 2008

ITextSharp - путь

0 голосов
/ 16 сентября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...