As per requirement, I have an editable PDF (created from XDP and XML using Adobe) and I want to edit a specific binding field using itext5. Was able to achieve this using pdfstamper in append mode. But it is doubling the PDF file size. Which seems to be incorrect. eg 5MB --> 9MB, 2MB --> 4MB
Could anyone suggest why this is occurring? Is anything missing in the below code?
CODE:
public static byte[] writeFormFieldValue(byte[] uploadedBytes, String fieldName, String Value)
throws Exception {
if (uploadedBytes == null) {
//throw new CertificateCustomException("Inavalid input parameres to parse certificate pdf");
}
// ByteArrayOutputStream bos = new ByteArrayOutputStream();\
byte[] outBytes = null;
String waterMarkedPDFName = "watermarkedPDF_" + System.currentTimeMillis();
try {
FileOutputStream bos = new FileOutputStream(waterMarkedPDFName);
PdfReader reader = new PdfReader(uploadedBytes);
PdfStamper stamper = new PdfStamper(reader, bos, '\0',false);
stamper.getAcroFields().setField(fieldName, Value);
stamper.close();
outBytes = WatermarkUtil.getBytesFromFile(new File(waterMarkedPDFName));
} catch (Exception e) {
} finally {
try {
File deleteFile = new File(waterMarkedPDFName);
if (deleteFile.exists())
deleteFile.delete();
} catch (Exception se) {
}
}
return outBytes;
// return bos.toByteArray();
}