Forms are not supported with PdfCopy. Use PdfCopyFields.
> -----Original Message-----
> From: itext-questions-admin@(protected)
> [mailto:itext-questions-admin@(protected)
> Behalf Of Andreas Wittek
> Sent: Monday, September 26, 2005 2:37 PM
> To: itext-questions@(protected)
> Subject: [iText-questions] PdfCopy.copyAcroForm wrong method
> getReaderFile
>
> Hello,
>
> I am trying to use one PDF-File containing a form as as
> template (regarding the form) for other PDFs which have the
> same structure as the form document but do not contain a form.
>
> Like Richard Freedman's Question on 2005-02-02 I try something like
>
>
> public static void copyFormToPDF(InputStream formpdf,
> InputStream tmplpdf, OutputStream outpdf)
> throws IOException {
> // Create document descriptors
> try {
> PdfReader formreader = new PdfReader(formpdf);
> PdfReader tmplreader = new PdfReader(tmplpdf);
>
> Document document = new
> Document(tmplreader.getPageSizeWithRotation(1));
> PdfCopy copy = new PdfCopy(document,outpdf);
> document.open();
> int n = tmplreader.getNumberOfPages();
> for (int i = 1; i <= n; i++) {
> copy.addPage(copy.getImportedPage(tmplreader,i));
> }
> copy.copyAcroForm(formreader);
> document.close();
> }
> catch (Exception ex) {
> ex.printStackTrace();
> }
> }
>
> and I get
>
>
java.lang.ArrayIndexOutOfBoundsException> at
java.lang.System.arraycopy(Native Method)
> at
java.io.BufferedOutputStream.write(Unknown Source)
> at
>
com.lowagie.text.pdf.OutputStreamCounter.write(OutputStreamCou
> nter.java:160)
> at
com.lowagie.text.pdf.PRStream.toPdf (
PRStream.java:218)
> at
>
com.lowagie.text.pdf.PdfIndirectObject.writeTo(PdfIndirectObje
> ct.java:167)
> at
com.lowagie.text.pdf.PdfWriter$PdfBody.add(PdfWriter.java:370)
> at
com.lowagie.text.pdf.PdfWriter$PdfBody.add(PdfWriter.java:350)
> at
com.lowagie.text.pdf.PdfWriter$PdfBody.add(PdfWriter.java:342)
> at
com.lowagie.text.pdf.PdfWriter.addToBody (
PdfWriter.java:1889)
> at
com.lowagie.text.pdf.PdfCopy.copyIndirect (
PdfCopy.java:195)
> at
com.lowagie.text.pdf.PdfCopy.copyObject (
PdfCopy.java:263)
> at
com.lowagie.text.pdf.PdfCopy.copyArray (
PdfCopy.java:249)
> at
com.lowagie.text.pdf.PdfCopy.copyObject (
PdfCopy.java:265)
> at
com.lowagie.text.pdf.PdfCopy.copyDictionary (
PdfCopy.java:216)
> at
com.lowagie.text.pdf.PdfCopy.copyObject (
PdfCopy.java:261)
> at
com.lowagie.text.pdf.PdfCopy.copyIndirect (
PdfCopy.java:194)
> at
com.lowagie.text.pdf.PdfCopy.copyObject (
PdfCopy.java:263)
> at
com.lowagie.text.pdf.PdfCopy.copyDictionary (
PdfCopy.java:219)
> at
com.lowagie.text.pdf.PdfCopy.copyObject (
PdfCopy.java:261)
> at
com.lowagie.text.pdf.PdfCopy.copyIndirect (
PdfCopy.java:194)
> at
com.lowagie.text.pdf.PdfCopy.copyObject (
PdfCopy.java:263)
> at
com.lowagie.text.pdf.PdfCopy.copyArray (
PdfCopy.java:249)
> at
com.lowagie.text.pdf.PdfCopy.copyObject (
PdfCopy.java:265)
> at
com.lowagie.text.pdf.PdfCopy.copyDictionary (
PdfCopy.java:219)
> at
com.lowagie.text.pdf.PdfCopy.copyObject (
PdfCopy.java:261)
> at
com.lowagie.text.pdf.PdfCopy.copyIndirect (
PdfCopy.java:194)
> at
com.lowagie.text.pdf.PdfCopy.copyObject (
PdfCopy.java:263)
> at
com.lowagie.text.pdf.PdfCopy.copyArray (
PdfCopy.java:249)
> at
com.lowagie.text.pdf.PdfCopy.copyObject (
PdfCopy.java:265)
> at
com.lowagie.text.pdf.PdfCopy.copyDictionary (
PdfCopy.java:219)
> at
com.lowagie.text.pdf.PdfCopy.copyAcroForm (
PdfCopy.java:388)
> at rw.util.pdf.PDFFormular.copyFormToPDF(PDFFormular.java:268)
> at rw.util.pdf.PDFFormular.copyFormToPDF(PDFFormular.java:247)
> at rw.util.pdf.FormCopy.main(FormCopy.java:20)
>
>
> I think I have found the reason for this Problem which is
> that PdfCopy uses the inherited Method
>
> RandomAccessFileOrArray getReaderFile(PdfReader reader) {
> return currentPdfReaderInstance.getReaderFile();
> }
>
> from PdfWriter. However, the currentPdfReaderInstance ist the
> wrong one, being the one for the PdfReader which does not
> contain the form.
> This method should be overwritten by something like (compare
> to other methods in PdfCopy)
>
> RandomAccessFileOrArray getReaderFile(PdfReader reader) {
> if (currentPdfReaderInstance != null) {
> if (currentPdfReaderInstance.getReader() != reader) {
> try {
>
> currentPdfReaderInstance.getReaderFile().close();
> }
> catch (IOException ioe) {
> // empty on purpose
> }
> currentPdfReaderInstance =
> reader.getPdfReaderInstance(this);
> }
> }
> else {
> currentPdfReaderInstance =
> reader.getPdfReaderInstance(this);
> }
> return currentPdfReaderInstance.getReaderFile();
> }
>
>
> When I add this mehtod to PdfCopy the Exception disappears
> and the information about the form appears in the output-PDF-file.
>
> However, the form does not display, when I open that file in
> e.g. Acrobat Reader.
>
> I do not understand enough about the content of PDF-files to
> be able to figure out, what goes wrong now.
>
> Perhaps someone can help me on this?
>
>
> Thanks
>
> Andreas
>
> *******************************************************
> * Dr. Andreas Wittek
> * Ravenworks GbR email: wittek@(protected)
> * Fahrenheitstr. 1 Tel.: ++49-421-2239700
> * 28359 Bremen Fax.: ++49-421-2239825
> * Germany http: www.ravenworks.de
> *******************************************************
>
>
>
> -------------------------------------------------------
> SF.Net email is sponsored by:
> Tame your development challenges with Apache's Geronimo App Server.
> Download it for free - -and be entered to win a 42" plasma tv
> or your very
> own Sony(tm)PSP. Click here to play:
> http://sourceforge.net/geronimo.php
> _______________________________________________
> iText-questions mailing list
> iText-questions@(protected)
> https://lists.sourceforge.net/lists/listinfo/itext-questions
>
-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server.
Download it for free - -and be entered to win a 42" plasma tv or your very
own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
iText-questions mailing list
iText-questions@(protected)
https://lists.sourceforge.net/lists/listinfo/itext-questions