> > Sounds like you have a form with an XFA form that has an AcroForm
> > counter-part. In that case, iText ignores the XFA and fill out the
> > AcroForm fields which have a slightly different alignment, scaling, etc.
I think I've found a way around this problem, but unfortunately I seem to have
uncovered another problem at the same time.
Firstly, my workaround for mergeXfaData() not actually merging XFA data if an
FDF form is also present. The solution was to upgrade to version 5.0.2, then I
could get the XFA form and explicitly fill it in - with code like this:
InputSource is = new InputSource(new StringReader(passedXfaDataString));
is.setEncoding("UTF-8");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfStamper stamper = new PdfStamper(passedPdfReader, baos);
XfaForm xfaForm = stamper.getAcroFields().getXfa();
xfaForm.fillXfaForm(is);
stamper.close();
return baos.toByteArray();
However, the next step I need to do is encrypt the final PDF. From reading
Paulo's replies when this question pops up, I know the encryption needs to be
done as soon as the stamper is created. so the code should look like:
...
PdfStamper stamper = new PdfStamper(passedPdfReader, baos);
stamper.setEncryption(PdfWriter.ENCRYPTION_AES_128, "", "",
PdfWriter.ALLOW_PRINTING);
XfaForm xfaForm = stamper.getAcroFields().getXfa();
xfaForm.fillXfaForm(is);
...
However, this doesn't do what I'd expect. Instead it ignores all the filled XFA
values leaving blank fields in the final PDF. I've tried all 4 of the various
similar setEncryption() methods on PdfStamper, but they all do the same thing -
they cause the filled XFA data values to not appear in the final PDF.
If setEncryption() is commented out, final PDF comes out fine, but unsecured.
If
setEncryption() (in any of the 4 similar variants) is enabled, the final PDF
comes out secured, but with no XFA data filled in.
I've also tried using stamper.getWriter().setEncryption(byte[], byte[], int,
int), using null byte arrays rather than empty strings for the passwords. But
that also did the same.
The variant of setEncryption() which takes a Certificate array hasn't been
tried, since I don't have any public certificates to use.
Has anyone got any suggestions to get around encryption causing all the form
data to be thrown away?
Thanks for your help,
Adam Carless
The contents of this message and any attachments are confidential and are
intended for the use of the persons to whom it is addressed.
If you are not the intended recipient, you should not copy, forward, use or
alter the message in any way, nor disclose its contents to any other person.
Please notify the sender immediately and delete the e-mail from your system,
if you so wish you can contact us on +44 1624 688000. The sender is not
responsible for any alterations that may have occurred without authorisation.
Any files attached to this email will have been checked by us with virus
detection software before transmission. You should carry out your own virus
checks before opening any attachments, as we do not accept any liability for
loss or damage which may be caused by viruses.
For information regarding company registration please visit the contact page at
www.hansard.com
------------------------------------------------------------------------------
_______________________________________________
iText-questions mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/itext-questions
Buy the iText book: http://www.itextpdf.com/book/
Check the site with examples before you ask questions:
http://www.1t3xt.info/examples/
You can also search the keywords list: http://1t3xt.info/tutorials/keywords/