2008-09-16 4 views

Antwort

6

Das .NET Framework nicht die Fähigkeit enthalten, zu modifizieren/erstellen PDFs. Sie benötigen eine Komponente von Drittanbietern, um das zu erreichen, wonach Sie suchen.

22

Ich glaube nicht, dass Sie können. Opensource-Komponente PDFSharp hat diese Funktionalität, und eine nette source code sample on file combining

+5

Proben auf ihren neuen Standort: http://www.pdfsharp.net/wiki/PDFsharpSamples.ashx –

+0

Ich weiß, das ist alt, aber ich folgte dieser Antwort und entdeckte, dass PDFSharp noch Unterstützung nicht umgesetzt hat die moderneren Versionen von PDF ... müssen Sie möglicherweise durch die Rahmen springen, damit es für alle PDFs funktioniert. Sehen Sie dies vor dem Springen in: http://forum.pdfsharp.net/viewtopic.php?f=2&t=693 –

5

Wie andere gesagt haben, ist nichts eingebaut, um diese Aufgabe zu erledigen. Verwenden Sie iTextSharp mit diesem example code.

+3

Ich denke, jemand sollte immer den Hinweis machen, dass iTextSharp die AGPL-Lizenz verwendet, die erfordert, dass Sie Ihren Quellcode freigeben mit der korrekten Verwendung von iTextSharps. Sie haben jedoch eine kommerzielle Lizenzierung zur Verfügung. Sei vorsichtig, wie du es benutzt! – Encryption

0

Obwohl es bereits gesagt wurde, können Sie PDFs nicht mit den integrierten Bibliotheken von .NET Framework bearbeiten. Ich kann jedoch iTextSharp empfehlen, was ein .NET-Port des Java-iText ist. Ich habe damit herumgespielt und festgestellt, dass es ein sehr einfaches Werkzeug ist. .NET Framework enthält so wie Bibliotheken

3

Ich glaube nicht, zu gehen. Ich habe iTextsharp mit C# verwendet, um PDF-Dateien zu kombinieren. Ich denke, iTextsharp ist der einfachste Weg, dies zu tun. Hier ist der Code, den ich benutzt habe.

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; 
    } 
} 
+0

Ist dies korrekt oder hilfreich, bitte akzeptieren Sie die Antwort –

+0

Vielen Dank! Last Minute speichern, wenn ich es brauchte. es ist auch schnell! –