Laden...

PDF "Mergen"

Letzter Beitrag vor 7 Monaten 4 Posts 486 Views
PDF "Mergen"

Gibt es in C# eine Library, die es mir ermöglicht PDFs zu mergen? Mit mergen meine ich nicht das klassische Zusammenführen, im Sinne von untereinander anhängen.

Ich habe eine PDF mit einem Header und eine PDF mit einem Body.

Ist es möglich diese zu verschmelzen?

Hat das eventuell schon mal jemand gemacht, oder hätte ein Code-Schnipsel für mich?

Wenn man etwas nicht einfach erklären kann, hat man es nicht verstanden.

-Albert Einstein

Hallo TomSchmitz

Ich glaube nicht dass es eine Library gibt, die das Verschmelzen automatisch macht.

Wirst also mit der passenden Library Header und Footer auslesen und neues Pdf generieren müssen.

Über die Forensuche findest du die Libraries, die du verwenden kannst.

Gruss
Alf

Lösung

Ich habe zuerst selber über Berechnungen im Bild die Header-Elemente manuell gesetzt.

Glücklicherweise gibt es aber auch die Library: iTextSharp.text.pdf

private static bool CombinePDFs(string srcPath, string pdfToCombinePath, string pathToSave)
{
   try
   {
       PdfReader reader = new PdfReader(srcPath);
       PdfReader sReader = new PdfReader(pdfToCombinePath);
       PdfStamper stamper = new PdfStamper(reader, new FileStream(pathToSave, FileMode.Create));
       PdfImportedPage page = stamper.GetImportedPage(sReader, 1);
       int n = reader.NumberOfPages;
       PdfContentByte background;
       for (int i = 1; i <= n; i++)
       {
           background = stamper.GetUnderContent(i);
           background.AddTemplate(page, 0, 0);
       }
       stamper.Close();
       return true;
   }
   catch (Exception ex)
   {
       throw new Exception("Could not combine PDFs.", innerException: ex);
   }
}

Also, falls jemand mal das gleiche Problem hat, hat er nun eine Antwort.

Wenn man etwas nicht einfach erklären kann, hat man es nicht verstanden.

-Albert Einstein

Zitat von TomSchmitz

Glücklicherweise gibt es aber auch die Library: iTextSharp.text.pdf

Bedenke, dass die Software zwar Open Source ist, aber nicht kostenlos sondern in den aller meisten Lizenzpflichtig.

Buying a license is mandatory as soon as you develop commercial activities distributing the iText software inside your product or deploying it on a network without disclosing the source code of your own applications under the AGPL license. These activities include:

  • offering paid services to customers as an ASP
  • serving PDFs on the fly in the cloud or in a web application
  • shipping iText with a closed source product

Daneben verwendet iTextSharp die problematische AGPL Lizenz.

Und hinzu kommt: iTextSharp ist schon ewig EOL.
Der Nachfolger ist IText7 (mit ebenfalls AGPL und ebenfalls "nicht-gratis Mentalität").