2008-09-16 3 views

ответ

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

6

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

22

Я не думаю, что вы можете. Компонент с открытым исходным кодом PDFSharp имеет эту функциональность, и хороший source code sample on file combining

+5

Образцы на своем новом сайте: http://www.pdfsharp.net/wiki/PDFsharpSamples.ashx – 2010-01-21 17:12:37

+0

Я знаю, что это старый, но я последовал за этот ответ, и обнаружил, что PDFsharp до сих пор не реализована поддержка более современные версии PDF ... вам может потребоваться перепрыгнуть через обручи, чтобы заставить его работать для всех PDF-файлов. См. Это перед тем, как перейти в: http://forum.pdfsharp.net/viewtopic.php?f=2&t=693 – 2016-03-24 20:37:08

5

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

+3

Я думаю, что кто-то должен всегда отмечать, что iTextSharp использует лицензию AGPL, которая требует, чтобы вы выпустили свой исходный код с соответствующим документированием использования iTextSharps. Однако у них есть коммерческое лицензирование. Будьте осторожны, как вы его используете! – Encryption 2013-09-23 17:47:12

0

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

3

Я не думаю, что .NET Framework содержит такие как библиотеки. Я использовал iTextsharp с C# для объединения файлов PDF. Я думаю, что iTextsharp - самый простой способ сделать это. Вот код, который я использовал.

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

    PdfReader reader = null; 
    Document sourceDocument = null; 
    PdfCopy pdfCopyProvider = null; 
    PdfImportedPage importedPage; 
    string [email protected]"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; 
    } 
} 
Смежные вопросы