Is there a way I can edit a PDF from Java?
I have a PDF document which contains placeholders for text that I need to be replaced using Java, but all the libraries that I saw created PDF from scratch and small editing functionality.
Is there anyway I can edit a PDF or is this impossible?
Advertisement
Answer
You can do it with iText. I tested it with following code. It adds a chunk of text and a red circle over each page of an existing PDF.
/* requires itextpdf-5.1.2.jar or similar */ import java.io.*; import com.itextpdf.text.DocumentException; import com.itextpdf.text.pdf.*; public class AddContentToPDF { public static void main(String[] args) throws IOException, DocumentException { /* example inspired from "iText in action" (2006), chapter 2 */ PdfReader reader = new PdfReader("C:/temp/Bubi.pdf"); // input PDF PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("C:/temp/Bubi_modified.pdf")); // output PDF BaseFont bf = BaseFont.createFont( BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); // set font //loop on pages (1-based) for (int i=1; i<=reader.getNumberOfPages(); i++){ // get object for writing over the existing content; // you can also use getUnderContent for writing in the bottom layer PdfContentByte over = stamper.getOverContent(i); // write text over.beginText(); over.setFontAndSize(bf, 10); // set font and size over.setTextMatrix(107, 740); // set x,y position (0,0 is at the bottom left) over.showText("I can write at page " + i); // set text over.endText(); // draw a red circle over.setRGBColorStroke(0xFF, 0x00, 0x00); over.setLineWidth(5f); over.ellipse(250, 450, 350, 550); over.stroke(); } stamper.close(); } }