Mit Overlay in PDFBox 2.0

Was ich versuche zu tun, hier ist zum erstellen von text und platzieren Sie es auf eine leere Seite. Diese Seite würde dann überlagert werden auf ein anderes Dokument und das würde dann gerettet werden, wie ein Dokument. In 1.8 ich war in der Lage, erstellen Sie eine leere PDPage in eine PDF -, text schreiben, um es als erforderlich, dann overlay, das PDF mit einem anderen, und dann speichern oder anzeigen auf dem Bildschirm mithilfe der folgenden code -

overlayDoc = new PDDocument();
page = new PDPage();
overlayDoc.addPage(page);
overlayObj = new Overlay();
font = PDType1Font.COURIER_OBLIQUE;
try {
    contentStream = new PDPageContentStream(overlayDoc, page);
    contentStream.setFont(font, 10);
}
catch (Exception e){
    System.out.println("content stream failed");
}

Nachdem ich das streamen, wenn ich brauchte, um etwas zu schreiben, um die overlay-Dokuments contentStream, würde ich diese Methode aufzurufen, geben Sie es meiner x -, y-coords und sagen, was text zu schreiben (wieder, dies ist in meiner version 1.8):

protected void writeString(int x, int y, String text) {
    if (text == null) return;
    try {
        contentStream.moveTo(x, y);
        contentStream.beginText();
        contentStream.drawString(text);  //deprecated. Use showText(String text)
        contentStream.endText();
    }
    catch (Exception e){
        System.out.println(text + " failed. " + e.toString());
    }
}

Ich würde diese Methode aufrufen, wenn ich brauchte, um text hinzuzufügen und zu, wo immer ich brauchte, es zu tun. Danach würde ich schließen, meine Inhalte streamen und dann verschmelzen Sie die Dokumente zusammen, wie Z:

import org.apache.pdfbox.Overlay;
Overlay overlayObj = new Overlay();

....

PDDocument finalDoc = overlayObj.overlay(overlayDoc, originalDoc);

finalDoc enthält nun eine PDDocument die ist mein original-PDF mit text überlagert, wo nötig. Ich könnte es speichern und betrachten es als ein BufferedImage auf dem desktop. Der Grund, warum ich zog nach 2.0 war, dass zuerst aus, ich brauchte, um immer über die aktuellsten Bibliothek und auch, dass ich Probleme mit dem zurückspielen von einem image auf der Seite (siehe hier).

Das Problem, das ich habe in dieser Frage ist, dass 2.0 nicht mehr hat, etwas ähnliches wie die org.apache.pdfbox.Overlay Klasse. Verwirren mich noch mehr, dass es zwei Overlay-Klassen in 1,8 (org.apache.pdfbox.Overlay und org.apache.pdfbox.util.Overlay) in der Erwägung, dass in 2.0 gibt es nur eine. Die Klasse die ich brauche (org.apache.pdfbox.Overlay), oder die Methoden, die es bietet, zumindest nicht in 2.0 wie weit ich es sagen kann. Ich kann nur finden,org.apache.pdfbox.multipdf.Overlay.

  • Ihre Frage ist nicht wirklich klar, also hat dein code funktioniert, Fragen Sie, bevor Sie versuchen, irgendetwas? Schauen Sie bitte in den source-code von OverlayPDF.java for5 ein Beispiel: svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/...
  • Es tut mir Leid... Nein, der code hat nicht funktioniert. Ich habe bereits die beiden Dokumente. Ich glaube, ich bin mit meinen writeString-Methode sollte es sein, den text in der contentStream. Ich sollte in der Lage sein zu schließen, dass contentStream und dann verschmelzen Sie die originalDoc und overlayDoc zusammen, um eine neue PDDocument, aber wenn ich versuche, diese Anzeige als Bild bekomme ich nur das original-Dokument.
  • Wenn ich mir den code geliefert, es ist das Zusammenführen von zwei Dateien zusammen. Ich habe das PDF geladen ist bereits als PDDocuments. Ich brauche zu überlagern, eine über der anderen. Die overlay(Map<Integer,String> specificPageOverlayFile) ist es, was mich immer bcz-es muss eine Datei zu überlagern?
  • "der code hat nicht funktioniert" ist nicht sehr spezifisch. Das beste würde sein, zu überarbeiten, Ihre Frage, zu zeigen, ein vollständiges minimal-code in 1,8, und einen kompletten code in 2.0, und eine Erklärung, was passiert. Mit diesen beiden Stücke software, die ich untersuchen könnte das.
  • Aktualisiert.
  • Getan. Vorschlag: ändern Sie Ihren Titel so etwas wie "Mit Overlay in PDFBox 2.0", wie Ihre Frage ist nicht wirklich über eine Seite content stream problem.

InformationsquelleAutor Rabbit Guy | 2015-09-29
Schreibe einen Kommentar