2016-06-05 11 views
2

Ich verwende PDFBox und Java, um ein PDF-Dokument zu erzeugen. Das Dokument hat mehrere Seiten mit Text und Bildern. Jede Seite hat die gleichen Bilder in der Kopf- und Fußzeile. Ich erstelle gerade ein neues PDImageXObject und rufe drawImage() mit dem neuen Objekt jedes Mal auf, wenn ich eine neue Seite hinzufüge. Das resultierende Dokument ist sehr schwer und ich nehme an, es ist so, weil es wiederholte Kopien desselben Bildes enthält.PDFBox. Mehrseitiges Dokument mit demselben Bild erzeugen

Was wäre der effektivste Weg, dies zu tun ?. Höchstwahrscheinlich hat pdfbox eine viel bessere Möglichkeit, dokumentenweite Ressourcen zu verwalten. Ich bin neu bei pdfbox und ehrlich gesagt konnte ich keine Dokumentation oder Beispiele zu diesem speziellen Anwendungsfall finden.

Vielen Dank

Antwort

2

Sie haben die Frage selbst beantwortet. Sie müssen nicht jedes Mal new PDImageXObject anrufen, einmal pro Datei ist genug. Sie müssen jedoch drawImage anrufen. (Sie können etwas mehr Platz sparen, wenn die Kopf- und Fußzeile zu 100% identisch sind, indem Sie ein XObject-Formular verwenden, aber Sie sparen nicht viel, es sei denn, der Text ist sehr komplex).

+0

Tilman, danke für die Antwort. Ich habe Ihren Vorschlag getestet und es funktionierte gut, die Dateigröße wurde auf fast die Größe eines Bildes reduziert. Um diesen Test durchzuführen, musste ich ein Wörterbuch von 'PDImageXObject'-Objekten erstellen, um zu verfolgen, welche Bilder bereits geladen sind und welche neu erstellt werden müssen. Ich frage mich, ob die Klasse PDResource und Associates in pdfbox für diesen Zweck bestimmt sind. Vielen Dank nochmal – edel

+0

PDResource ist ein Ressourcenwörterbuch; Diese gibt es für Seiten, Muster, Formen und mehr. Es enthält Bilder, Schattierungen, Muster, Farbräume, erweiterte Grafikzustände usw. Dies ist etwas für die PDF-Struktur selbst, nicht wirklich für Ihre Optimierung. –