2017-10-29 4 views
0

Im Bereich Funktionen auf der Website von NReco, in der Liste Beispiele: Es gibt eine Zeile über MergePdf. Ich habe in der API-Referenz gesucht und die Intellisense in Visual Studio, aber ich kann nichts finden.PDFs zusammenführen mit NReco PdfGenerator

Ich möchte mehrere PDFs zusammenführen, bevor ich sie in einer Mail sende. Die Pdfs werden mit nreco wkhtmltopdf mit verschiedenen Kopf- und Fußzeilen erzeugt, die ich nicht im selben Generat erstellen konnte, also habe ich die Generation geteilt und möchte nun die PDFs wieder zusammenführen. Oder muss ich noch eine andere Bibliothek beteiligt haben.

Antwort

0

Es gibt zwei Möglichkeiten, wie man das Ziel erreichen können, die Sie erwähnt:

  • Verwendung GeneratePdfFromFiles Verfahren, das Array von WkHtmlInput Strukturen annimmt, die es Ihnen ermöglichen, Kopf-/Fußzeilen für jeden Eingang separat HTML-Datei angeben. Als Ergebnis wird ein PDF erzeugt; Beachten Sie, dass diese Methode erfordert einen gültigen Lizenzschlüssel und ist nicht verfügbar für eine freie Bibliothek Benutzer
  • erzeugen mehrere PDFs in einer Standard-Weise, und dann merge them into one resulting PDF with help of iTextSharp library (freie LGPL 4.1.6 kann für diesen Zweck verwendet werden).
+0

Danke! Ich werde es in ein paar Tagen anschauen. – Aronsson

0

Nur teilen, was ich landete. Zumindest für jetzt. Es ist eine Modifikation der vorgeschlagenen Lösung mit iTextSharp.

public static byte[] MergePdfs(IEnumerable<byte[]> pdfs) 
    { 
     using (var memoryStream = new MemoryStream()) 
     { 
      var document = new Document(PageSize.A4); 
      var writer = PdfWriter.GetInstance(document, memoryStream); 

      document.Open(); 
      var writerDirectContent = writer.DirectContent; 

      foreach (var pdf in pdfs) 
      { 
       var pdfReader = new PdfReader(pdf); 
       var numberOfPages = pdfReader.NumberOfPages; 

       for (var currentPageNumber = 1; currentPageNumber <= numberOfPages; currentPageNumber++) 
       { 
        document.SetPageSize(PageSize.A4); 
        document.NewPage(); 

        var page = writer.GetImportedPage(pdfReader, currentPageNumber); 
        writerDirectContent.AddTemplate(page, 1f, 0, 0, 1f, 0, 0); 
       } 
      } 

      document.Close(); 

      return memoryStream.ToArray(); 
     } 
    } 
Verwandte Themen