How to update a PDF without creating a new PDF?
I am using PdfReader
, PdfStamper
and 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 filename
to be the same as the original filename
, then my application fails.
Posted on StackOverflow on Apr 18, 2013 by tk2013
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
PdfReader
; -
create a
PdfWriter
instance for the resulting PDF; -
create a
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 How to update a PDF without creating a new PDF? if you want to see how to answer this question in iText 5.