Hello everyone,
While trying to sign PDFs created from many different sources we found
an unusual behavior with files generated with iText (older versions up
until 7.1.1) when they are created with full compression enabled (that
creates the xref table as a stream).
iText does not add the the reference for the object of the xref table
inside the own table. That way, when signing with PDFBox (2.0.7, 2.0.8
and even 2.0.9 that I saw had its tagged created on github)
COSWriter.prepareIncrement does not know that the number of objects is
actually one higher than it had found, so the first entry on the
signature revision has the same number that the xref table on the
previous revision.
With invisible signatures that does not looks like a problem, but when
we have a visible signature, the image does not show in in Microsoft
Edge or Google Chrome.
PDFBox can get the actual highest number on PDFs created with xref table
stream that have its own reference inside.
I'm actually in doubt which on is the correct table, with or without a
reference its own dictionary object.
For a PDF that the table contains the reference we used the one from
PDFBOX-3198 just removing the signature (or use it as it is on the
ticket, because the image shows up on browsers).
To create a iText PDF with xref table as stream just run:
WriterProperties properties = new WriterProperties();
properties.setFullCompressionMode(true);
PdfWriter writer = new PdfWriter("doc.pdf", properties);
PdfDocument pdf = new PdfDocument(writer);
Document document = new Document(pdf);
document.add(new Paragraph("Hello World!"));
document.close();
Thank you guys very much.
--
Atenciosamente,
Gabriel Pessoa
Analista
BRy Tecnologia
Rua Lauro Linhares, 2123 Torre B - 3º andar
88036-002 - Florianópolis - SC - Brasil
+55 (48) 3234 6696
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]