I need to change the value of a field in an existing PDF file.
I am using
AcroFields and that's working fine.
But, in doing so, it is required to create a new PDF and I would like the change
to be reflected in the existing PDF itself. If I am setting the destination
to be the same as the original
filename, then my application fails.
You can't read a file and write to it simultaneously. Think of how Microsoft Word works: you can't open a Word document and write directly to it. Word always creates a temporary file, writes the changes to it, then replaces the original file with it, and then throws away the temporary file.
You can do that this way:
read the original file with
PdfWriter instance for the resulting PDF;
PdfDocument to manipulate the original file
This example is written using iText 7:
PdfReader reader = new PdfReader(src); PdfWriter writer = new PdfWriter(dest); PdfDocument pdfDoc = new PdfDocument(reader, writer); //manipulate pdf… pdfDoc.close();
Click this link if you want to see how to answer this question in iText 5.