Bearbeiten von pdf-Seite mit pdfbox
Wie Bearbeite ich eine pdf-Seite mit java-und pdfbox durch das schreiben in eine bestimmte position, die ich schon kenne in Pixel ?
Ich versuchte dieses aber es überschreibt :
PDDocument document = null;
try {
document = PDDocument.load(new File("/x/x/x/mypdf.pdf"));
PDPage page = (PDPage) document.getDocumentCatalog().getAllPages().get(0);
PDFont font = PDType1Font.HELVETICA_BOLD;
PDPageContentStream contentStream = new PDPageContentStream(document, page);
page.getContents().getStream();
contentStream.beginText();
contentStream.setFont(font, 12);
contentStream.moveTextPositionByAmount(100, 100);
contentStream.drawString("Hello");
contentStream.endText();
contentStream.close();
document.save("/x/x/x/mypdf.pdf");
document.close();
} catch (IOException e) {
e.printStackTrace();
} catch (COSVisitorException e) {
e.printStackTrace();
}
Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie verwendet haben, PDFBox, alles, was Sie fehlt, ist das Anhängen der Seite. Nur ändern Sie diese Zeile:
zu:
Ab PDFBox 2.0, die
boolean
appendContent
wurde ersetzt durch dieAppendMode
APPEND
solche, die das äquivalent zu den vorherigen code ist jetzt:Ich es herausfinden, wie es zu tun, statt mit pdfbox verwendet, ich iTextpdf, das ist der java-code, den ich verwendet :
Anita korrekt ist. In der Tat, es funktioniert ganz gut. Ich möchte hinzufügen, dass die Linie
ist möglicherweise Fremd, und PDPage wird abgeschrieben zu Gunsten von PDPageable in den neueren Versionen (und ist hauptsächlich für den Druck), aber der code funktioniert für Ihre Zwecke, ohne sich die Kosten von iText (und nachdem alle, die Sie ursprünglich gefragt PDFBox).
Nicht vergessen das Update Anita gab zu erstellen, die zusätzlichen bits in der Erstellung von contentstream:
Sollten Sie auch daran denken, dass Sie wahrscheinlich werden das erstellen und schließen von streams für jeden Abschnitt drucken legen Sie oben auf die pdf, die Sie überlagern text auf. Sie müssen sicher sein, schließen Sie die streams und das Dokument so, dass die Puffer geschrieben werden, sonst werden Sie nicht sehen Sie Ihre änderungen.
Auch, für diejenigen, die versuchen dieses heraus, es gibt mehrere Optionen von Download-Bibliotheken von apache für pdfbox. Der am einfachsten zu verwenden, ich denke, das ist (derzeit) die benannte pdfbox-app-1.8.10.jar (die ich momentan verwende, sogar in meiner JSF-Anwendungen). Es enthält bereits die anderen Bibliotheken, die fest verdrahtet sind, in pdfbox, die würden Sie auch brauchen, um downloaden zu tun, etwas sinnvolles.
PDPageContentStream
Konstruktor mit drei boolean-Parameter ist eine noch bessere Wahl. Es versucht sicherzustellen, dass zu Beginn des neuen Streams, die Grafik ist im Ausgangszustand.