iText has the limitation that it doesn't look at the permissions the way
Acrobat does, in other words, it's more restrictive than Acrobat. It's not
rocket science to fix it but nobody contributed code to do it. In any case
that wouldn't resolve the flattening problem that would always be illegal.

Paulo

----- Original Message ----- 
From: "Haroon Rafique" <[EMAIL PROTECTED]>
To: <itext-questions@lists.sourceforge.net>
Sent: Monday, April 07, 2008 9:24 PM
Subject: [iText-questions] Filling forms in a government generated file with
owner password using itext 2.0.3+


> Hi there,
>
> We are very happy users of itext 1.4.8. Our usage is as follows. We take
> this Government of Canada generated fillable PDF:
> http://www.cra-arc.gc.ca/E/pbg/tf/t2202a_flat/README.html
> and then we use the fillable PDF via PdfStamper to fill some AcroFields
> and then flatten it and present it to our users.
>
> Our users are University students and the data we're filling in the form
> is tuition amounts and degree related information.
>
> Now, I've been lazy in upgrading itext primarly because the late 2.0.x and
> 2.1 version were not available in the maven repo (did I mention I'm
> lazy??). In any case, now that 2.0.8 and 2.1.0 are in public repo with all
> dependencies resolved, I decided to upgrade. I encountered a problem with
> itext 2.0.3+ where I was getting the infamous "PdfReader not opened with
> owner password".
>
> Looking at:
> http://itext.ugent.be/library/question.php?id=497
> and looking at the source code:
>
>         if (!reader.isOpenedWithFullPermissions())
>             throw new IllegalArgumentException("PdfReader not opened with
> owner password");
>
> What are our options going forward, in your experience?
>
> 1. Stay with 2.0.2 for ever
> 2. Patch itext 2.0.3+
> 3. Modify our code???
>
> Any help is appreciated. itext is fully entrenched in our business process
> now. I can't imagine management would like having to pay mega dollars to
> start printing/mailing hard copies of T2202As again :-)
>
> Our code snippet is supplied below:
>
>             byte[] byteArray =  (byte[])
> sc.getAttribute(Constants.T2202A_BYTE_ARRAY_KEY);
>             PdfReader reader = new PdfReader(byteArray);
>             ByteArrayOutputStream baos = new ByteArrayOutputStream();
>             // apply extra content to the document using PdfStamper
>             PdfStamper stamp = new PdfStamper(reader, baos);
>             // lock down the document to only allow copying/printing
>             stamp.setEncryption(PdfWriter.STRENGTH40BITS, null, null,
>                     PdfWriter.AllowCopy | PdfWriter.AllowPrinting);
>
>             // AcroFields object that allows us to get PDF fields
>             AcroFields acrobatForm = stamp.getAcroFields();
>
>             Set<String> names = acrobatForm.getFields().keySet();
>             // iterate over all the fillable form fields
>             for( String name : names ) {
>                 // value for field, if any
>                 String value = valuesMap.get(name);
>                 if( value != null ) {
>                     acrobatForm.setField(name, value);
>                 }
>             }
>
>             // flatten all form fields upon closing
>             stamp.setFormFlattening(true);
>             stamp.close();
>
>             // set Content-disposition header
>             String contentDisposition = "attachment; filename=T2202A-" +
>                     getPerson(request).getPersonId() + "-" +
>                     t2202AForm.getSelectedYear() + ".pdf";
>             response.setHeader("Content-disposition", contentDisposition);
>
>             // set other headers
>             response.setContentType("application/pdf");
>             response.setHeader("Expires", "0");
>             response.setHeader("Cache-Control", "max-age=600");
>             response.setHeader("Pragma", "public");
>             response.setContentLength(baos.size());
>
>             try {
>                 OutputStream out = response.getOutputStream();
>
>                 baos.writeTo(out);
>                 out.flush();
>                 out.close();
>             } catch( IOException ioe ) {
>                 logger.info("User hit cancel (or encountered an IO
> problem) while generating T2202A PDF. {}", ioe);
>             }
>
> Thanks in advance,
> --
> Haroon Rafique
> <[EMAIL PROTECTED]>


-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
iText-questions mailing list
iText-questions@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/itext-questions

Do you like iText?
Buy the iText book: http://www.1t3xt.com/docs/book.php
Or leave a tip: https://tipit.to/itexttipjar

Reply via email to