Hi Paulo,
i've tried to implement your tip with the form field on one page and
kids in the next pages, but i have serious problems.
If you create the field on page 1 (and maybe the first kid) you
can't create a kid on page 2, as the field seems to be
written out, if a newPage() occurs.
Have a look at the code below.
If you create the second kid while the PdfWriter is on page 1,
it is added on the first page.
Do you have any idea how to add kids to fields on different pages?
Regards,
Peter
BTW: In Version 137 you didn't change anything about the fields, did you?
Here's the code for the naiv approach. In the resulting PDF only
the first kid appears.
public static void main(String[] args)
{
String strOutPDF = "D:/temp/with_fields_1.pdf";
System.out.println("Testing fields on different pages");
Document doc = new Document();
try
{
PdfFormField aFormField = null;
PdfFormField aSecondKid = null;
PdfFormField aFirstKid = null;
float fontSize = 12;
Color textColor = new GrayColor(0f);
BaseFont helv = BaseFont.createFont("Helvetica", "winansi",
false);
PdfWriter aWriter = PdfWriter.getInstance(doc,
new
FileOutputStream(strOutPDF));
doc.open();
PdfContentByte cb = aWriter.getDirectContent();
doc.add(new Paragraph("Page 1"));
aFormField = PdfFormField.createTextField(aWriter, false,
false, 100);
aFormField.setFieldName("ATextField");
aFirstKid = PdfFormField.createTextField(aWriter, false,
false, 100);
aFirstKid.setWidget(new Rectangle(171, 750, 342, 769),
PdfAnnotation.HIGHLIGHT_INVERT);
aFormField.addKid(aFirstKid);
aWriter.addAnnotation(aFormField);
doc.newPage();
doc.add(new Paragraph("Page 2"));
aSecondKid = PdfFormField.createTextField(aWriter, false,
false, 100);
aSecondKid.setWidget(new Rectangle(171, 450, 342, 469),
PdfAnnotation.HIGHLIGHT_INVERT);
aFormField.addKid(aSecondKid);
aWriter.addAnnotation(aSecondKid);
doc.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("finished.");
}
> By the way, the next version will take care of this and other problems
> both in PdfWriter and PdfStamper.
>
> Best Regards,
> Paulo Soares
>
> > -----Original Message-----
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED] On
> > Behalf Of Paulo Soares
> > Sent: Friday, September 03, 2004 12:44 PM
> > To: Peter Soelter; [EMAIL PROTECTED]
> > Subject: RE: [iText-questions] Same form-field names on
> > different pages
> >
> > You've managed to create an invalid pdf. Field support in
> > iText is not very good, you have everything that is needed to
> > create the fields but it's a bit low level and you have to
> > pay attention to details.
> > In this case you need to create a field with the value that
> > will be the parent and you'll have a kid in each page with
> > the widget.
> >
> > Best Regards,
> > Paulo Soares
> >
> > > -----Original Message-----
> > > From: [EMAIL PROTECTED]
> > > [mailto:[EMAIL PROTECTED] On
> > > Behalf Of Peter Soelter
> > > Sent: Thursday, September 02, 2004 4:19 PM
> > > To: [EMAIL PROTECTED]
> > > Subject: [iText-questions] Same form-field names on different pages
> > >
> > > Hi everybody,
> > > I'm trying to import a PDF File, populate it with form fields
> > > and save the result. This works fine so far.
> > >
> > > But if there are fields with the same name on different
> > > pages of the document, iText seems to get difficulties with
> > > the fields on the following pages.
> > >
> > > If you open the resulting PDF with Acrobat (Reader) 5 and
> > > try to TAB through the fields, Acrobat crashes with a GPF.
> > > Acrobat 6 is a little smarter, but doens't display the
> > > fields correctly.
> > >
> > > You can produce such a PDF with same named fields on different
> > > pages with Acrobat 5 full version and it works fine.
> > > In Acrobat (Reader) 6 they even implemented a new feature:
> > > all fields with the same name are filled automatically with
> > > the value of the changed field.
> > >
> > > Is this a kind of bug in iText?
> > > I'm using the latest version (iText-paulo-136) from
> > > http://itextpdf.sourceforge.net
> > >
> > > Any comments?
> > >
> > > Best regards,
> > > Peter
> > >
> > > Here's some sample code. You need any PDF without AcroForm or
> > > Fields as an
> > > input.
> > >
> > >
> > > public class FieldsonPages
> > > {
> > >
> > > public static void main(String[] args)
> > > {
> > > String strInPDF = "D:/temp/without_fields.pdf";
> > > String strOutPDF = "D:/temp/with_fields.pdf";
> > >
> > > System.out.println("Testing fields on different pages");
> > > PdfReader reader;
> > > try
> > > {
> > > String strFeldName;
> > > reader = new PdfReader(strInPDF);
> > > FileOutputStream out = new
> > > FileOutputStream(strOutPDF);
> > >
> > > Document document = new
> > > Document(reader.getPageSize(1));
> > > PdfWriter aWriter =
> > > PdfWriter.getInstance(document, out);
> > >
> > > document.open();
> > > int iPage;
> > > for (iPage = 1; iPage <=
> > > reader.getNumberOfPages(); ++iPage)
> > > {
> > > int iField = 0;
> > > if (iPage != 1) {
> > >
> > > document.setPageSize(reader.getPageSize(1));
> > > document.newPage();
> > > }
> > >
> > > PdfContentByte cb =
> > > aWriter.getDirectContent();
> > >
> > > cb.addTemplate(aWriter.getImportedPage(reader, iPage), 0, 0);
> > >
> > > strFeldName = "Field_" + iField;
> > > Rectangle aRect = new
> > > Rectangle(100, 100, 350, 150);
> > > TextField aTextField = new
> > > TextField(aWriter, aRect, strFeldName);
> > > aTextField.setBorderWidth(1);
> > > aTextField.setBorderColor(Color.black);
> > >
> > > aWriter.addAnnotation(aTextField.getTextField());
> > > iField++;
> > >
> > > strFeldName = "Field_" + iField;
> > > aRect = new Rectangle(100, 300,
> > > 350, 350);
> > > aTextField = new
> > > TextField(aWriter, aRect, strFeldName);
> > > aTextField.setBorderWidth(1);
> > > aTextField.setBorderColor(Color.black);
> > >
> > > aWriter.addAnnotation(aTextField.getTextField());
> > > iField++;
> > > }
> > >
> > > document.close();
> > >
> > > } catch (IOException e) {
> > > e.printStackTrace();
> > > } catch (DocumentException e) {
> > > e.printStackTrace();
> > > }
> > > System.out.println("done");
> > > }
> > > }
>
--
NEU: Bis zu 10 GB Speicher f�r e-mails & Dateien!
1 GB bereits bei GMX FreeMail http://www.gmx.net/de/go/mail
-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click
_______________________________________________
iText-questions mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/itext-questions