Ich benutze iText (insbesondere iTextSharp 4.1.6) und ich möchte ein PDF erstellen, indem ich Seiten aus vorhandenen PDFs kombiniere, aber auch neue Seiten aus einem Bild einfüge.iText - wie man Seiten zu einem mit PdfCopy erstellten Dokument hinzufügt
Ich habe diese beiden Teile separat arbeiten mit PdfCopy und PdfWriter jeweils. Der Code, der eine Seite aus einem Bild zu erstellen wie folgt aussieht:
PdfWriter pw = PdfWriter.GetInstance(doc, outputStream);
Image img = Image.GetInstance(inputStream);
doc.Add(img);
doc.NewPage();
Da nun PdfCopy von PDFWriter erbt, ich dachte, dass ich solche „Bild Seiten“ zu meinem PdfCopy Objekt hinzuzufügen wäre in die Lage mit der gleichen Technik, aber es funktioniert nicht (wenn Sie im obigen Beispiel eine PdfCopy anstelle eines PdfWriter instanziieren, kommt auf der Seite nichts heraus).
Aus einem kurzen Blick auf den Quellcode stelle ich fest, dass, wenn der Konstruktor für PdfCopy den Superklassenkonstruktor aufruft, dies mit einem neuen Document-Objekt tut, nicht dem übergebenen, also ist das der Grund.
Gibt es einen besseren Weg, dies zu tun? Im Moment rate ich am besten, ein einzelnes Pdf-Bild aus dem Bild mit PdfWriter zu erstellen und es dann mit PdfCopy zu dem Dokument hinzuzufügen, aber das scheint eine Art Workaround zu sein.
Was Sie als Arbeits um scheint eine richtige Lösung zu mir beschrieben. PdfCopy wurde entwickelt, um mehrere PDFs zu kombinieren und Sie können sie auf Ihre bereits vorhandenen PDFs anwenden und neu erstellen. Wenn das Bild nicht zu groß ist, können Sie das PDF im Speicher (byte []) erstellen und von dort lesen; Daher sind zusätzliche temporäre Dateien nicht erforderlich. – mkl
Danke - Ich bin nicht vertraut mit iText und es scheint so voll ausgestattet, dass ich nur nicht sicher war, ob es eine ganz andere Möglichkeit, dies zu tun war. Ich habe es implementiert, die temporäre PDF-In-Memory erstellen und alles funktioniert sehr gut :-) – Andy