Hier ist ein Beispiel mit PDFBox 2.0.2. Dies wird ein PDF laden und etwas Text in der unteren rechten Ecke in einer roten transparenten Schriftart schreiben. Wenn es sich um ein mehrseitiges PDF handelt, erscheint das Wasserzeichen auf jeder Seite. Es ist möglicherweise nicht produktionsbereit, da ich nicht sicher bin, ob einige zusätzliche Nullbedingungen überprüft werden müssen, aber Sie sollten in die richtige Richtung laufen.
Beachten Sie, dass dieser bestimmte Codeblock die ursprüngliche PDF-Datei nicht ändert, sondern eine neue PDF-Datei mit Tmp_ (Dateiname) als Ausgabe erstellt.
private static void watermarkPDF (File fileStored) {
File tmpPDF;
PDDocument doc;
tmpPDF = new File(fileStored.getParent() + System.getProperty("file.separator") +"Tmp_"+fileStored.getName());
doc = PDDocument.load(fileStored);
for(PDPage page:doc.getPages()){
PDPageContentStream cs = new PDPageContentStream(doc, page, AppendMode.APPEND, true, true);
String ts = "Some sample text";
PDFont font = PDType1Font.HELVETICA_BOLD;
float fontSize = 14.0f;
PDResources resources = page.getResources();
PDExtendedGraphicsState r0 = new PDExtendedGraphicsState();
r0.setNonStrokingAlphaConstant(0.5f);
cs.setGraphicsStateParameters(r0);
cs.setNonStrokingColor(255,0,0);//Red
cs.beginText();
cs.setFont(font, fontSize);
cs.setTextMatrix(Matrix.getTranslateInstance(0f,0f));
cs.showText(ts);
cs.endText();
}
cs.close();
}
doc.save(tmpPDF);
}
Mögliche Duplikat [Watermarking mit PDFBox] (http://stackoverflow.com/questions/8929954/watermarking-with-pdfbox) –
* Ich habe versucht, iText vor diesem, aber iText ist nicht frei. Ich möchte eine Open Source ... * - Solche Behauptungen sind hier unangebracht. Wenn Sie eine Aufgabe mit der Bibliothek XXX ausführen möchten, müssen Sie nicht erklären, warum Sie die Bibliothek YYY nicht verwenden. Stattdessen hättest du erklären sollen, was du versucht hast und wo du stecken geblieben bist. Was den Anspruch selbst betrifft, ist iText * * Open Source und Sie können es verwenden, ohne Lizenzgebühren zu bezahlen, solange Sie die AGPL-Regeln befolgen. PDFBox ist ebenfalls Open Source und Sie können es verwenden, solange Sie die Regeln von Apache License v2.0 befolgen. – mkl
Sehen Sie sich das AddMessageToEachPage.java-Beispiel im Quellcode-Download an. Bearbeiten Sie dann Ihre Frage für das verbleibende Problem. –