So fügen Sie einen PDPage in einem anderen PDPage mit pdfbox
Nutze ich verschiedene Werkzeuge wie der Verarbeitung zu schaffen, Vektor-plots. Diese Grundstücke sind schriftlich als Einzel-oder multi-page PDF-Dateien. Ich möchte, um diese Grundstücke in einem einzigen Bericht-wie pdf mit pdfbox.
Meinen aktuellen workflow enthält diese PDF-Dateien als Bilder mit dem folgenden pseudo-code
PDDocument inFile = PDDocument.load(file);
PDPage firstPage = (PDPage) inFile.getDocumentCatalog().getAllPages().get(0);
BufferedImage image = firstPage.convertToImage(BufferedImage.TYPE_INT_RGB, 300);
PDXObjectImage ximage = new PDPixelMap(document, image);
PDPageContentStream contentStream = new PDPageContentStream(document, page);
contentStream.drawXObject(ximage, 0, 0, ximage.getWidth(), ximage.getHeight());
contentStream.close();
Während dies funktioniert, verliert er die Vorteile der Vektor-Datei-Formate, espectially-Datei/Größe vs. Druck-qualitity.
Ist es möglich, pdfbox, um andere Seiten einer pdf-Datei als eingebettete Objekte in eine Seite (Nicht als separate Seite)? Könnte ich z.B. mit einem PDStream? Ich würde lieber eine Lösung wie pdflatex ist in der Lage, einbetten von pdf-Figuren in ein neues pdf-Dokument.
Was anderen Java-Bibliotheken können Sie empfehlen für die Aufgabe?
- Ist es möglich, pdfbox, um andere Seiten einer pdf-Datei als eingebettete Objekte in eine Seite - sollte Es möglich sein. Das PDF-format ermöglicht die Verwendung der so genannten form-xobjects zu dienen, wie solche eingebetteten Objekte. Ich sehe nicht, eine explizite Implementierung für, dass, obwohl, aber das Verfahren ist ähnlich genug, um was
PDFMergerUtility
tut. Was anderen Java-Bibliotheken können Sie empfehlen für die Aufgabe? - Allgemeine Bibliothek soll es Ihnen ermöglichen, das zu tun, iText und PdfClown beide haben explizite Unterstützung für so etwas. - Richtig, es sollte vielmehr eine gemeinsame Aufgabe. Sah in
PDFMergerUtility
und fügt PDF-Dateien als einzelne Seiten. iText ist keine option, da seine Lizenz ändern Sie die neuesten Versionen. Werfen Sie einen Blick in PdfClown obwohl. Danke für den Hinweis darauf.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollte es möglich sein. Das PDF-format ermöglicht die Verwendung der so genannten form-xobjects zu dienen, wie solche eingebetteten Objekte. Ich sehe nicht, eine explizite Implementierung für, dass, obwohl, aber das Verfahren ist ähnlich genug, um was
PageExtractor
oderPDFMergerUtility
tun.Einen proof-of-concept abgeleitet von
PageExtractor
mit dem aktuellen SNAPSHOT der PDFBox 2.0.0 Entwicklung version:Dieser code liest die erste Seite von einem Quelldokument zu einem Zieldokument als XObject und legt es zweimal auf einer Seite gibt es mit unterschiedlicher Skalierung, die rotation und Transformationen, wie z.B. für diese Quelle
schafft es diese
Die helper-Methode
importAsXObject
tatsächlich den import ist wie folgt definiert:Wie oben erwähnt, dies ist nur ein proof-of-concept, Ecke Fälle noch nicht berücksichtigt worden.
Aktualisieren dieser Frage:
Beispiel zeigen die überlagerung einer PDF-Seite auf eine weitere PDF-Datei: SuperimposePage.
Diese Klasse ist Teil des Apache PDFBox Beispiele und Beispiel-Transformationen, wie gezeigt, die von @mkl zugefügt wurden.
Als mkl entsprechend vorgeschlagen, PDFClown ist unter den Java-Bibliotheken, welche explizite Unterstützung für die Seite einbetten (so genannte Form-XObjects (siehe PDF-Referenz 1.7, § 4.9)).
Damit erhalten Sie einen Einblick in die Art und Weise PDFClown funktioniert der folgende code stellt den Gegenwert von mkl ist PDFBox-Lösung (ANMERKUNG: da die mkl behauptete später, seine code-Beispiel war keineswegs optimiert, so dass dieser Vergleich entspricht möglicherweise nicht den tatsächlichen status von PDFBox -- Kommentare sind willkommen, dies zu klären):
Vergleich dieser code PDFBox entspricht, können Sie feststellen, dass einige relevante Unterschiede, die zeigen, PDFClown ist ordentlicher Stil (es wäre schön, wenn einige PDFBox Experte konnte bestätigen meine Aussagen):
Der springende Punkt ist, dass PDFClown verfügt über eine reiche Architektur aus mehreren Abstraktionsebenen: entsprechend Ihren Anforderungen können Sie wählen Sie die entsprechende coding style (entweder Tauchen Sie ein in PDF-low-level-grundlegende Strukturen oder nutzen, seine komfortable und elegante high-level-Modell). PDFClown können Sie zwicken jedes einzelne byte und lösen komplexe Aufgaben, eine lächerlich einfache Methode, an Ihrem Willen.
OFFENLEGUNG: ich bin der Hauptentwickler von PDFClown.