Am Tue, 8 Jun 2010 04:25:49 -0700
schrieb Leonard Rosenthol <lrose...@adobe.com>:

hi leonard,

thanks for your reply :) 
since you've got adobe.com in your mail adress i think the final
conclusion in this case is best sent to you.

since i switched to apache instead of lighttpd sending pdfforms was
more successful, but still bigger forms are a problem while very small
forms are sent ok 100% of the time.
even worse i experienced what we call a "blinker-problem" (works, works
not, works not, works.... in random order) on pdfforms on given example
with lets say 120+ textfields and comboboxes.

on those "big" pdfforms rarely a submit is answered with a immediate
success, way more often pressing the "push me" button results in a
timeout which leads ~50:50 to an empty or complete /tmp/vars.txt .

while i tried to strace the reader to find out where the timeout is
coming from (which immediately freaked me because of the ~400
poll/gettimeofday/read's per second flushing my shells history :/) i had
the idea to try the windows version of the reader and started my vm,
changed the post-url in the java code and gave it a try.

to make a long story short: the windows reader had no problems even
with ridiculously big (for (int i = 0; i < 12000; i++)) pdfforms -
sending is done in 2-3 seconds.

linux reader: 9.3.2 04/01/2010... if you like i can add additional info
about the system i ran the tests on.


case closed, thanks to all for the help :)

> I can tell you that people have been sending >1024 bytes of form data
> from Acrobat/Reader for over a decade - so whatever is going on, is
> on your server...
> 
> Leonard
> 
> -----Original Message-----
> From: camikusch [mailto:camiku...@web.de] 
> Sent: Tuesday, June 08, 2010 4:22 AM
> To: itext-questions@lists.sourceforge.net
> Subject: Re: [iText-questions] max number of comboboxes in a pdfform
> is 85?
> 
> Am Wed, 2 Jun 2010 06:32:30 -0700
> schrieb Leonard Rosenthol <lrose...@adobe.com>:
> 
> i discovered the error has nothing to do with the number or kind of
> pdfform elements but the amount of data transmitted.
> the example i posted happen to send less then 1024bytes of data to the
> webserver which is fine, but when the amount of data exceeds 1023 byte
> (pdfformfield names and the associated data) adobe reader sends a
> "expect 100-continue" header which isnt correctly handled by
> lighttpd...
> 
> 2010-06-08 08:19:57: (request.c.304) fd: 8 request-len: 207
> POST /get_post_vars.php HTTP/1.1
> User-Agent: AcroForms
> Host: localhost
> Accept: */*
> Content-Type: application/x-www-form-urlencoded
> Acrobat-Version: 9.3.2
> Content-Length: 1130
> Expect: 100-continue
> 
> 2010-06-08 08:19:57: (response.c.128) Response-Header:
> HTTP/1.1 417 Expectation Failed
> Content-Type: text/html
> Content-Length: 363
> Connection: close
> Date: Tue, 08 Jun 2010 06:19:57 GMT
> Server: lighttpd/1.4.26
> 
> lighttps homepage has a workaround for 1.4.21+
> server.reject-expect-100-with-417 = "disable" 
> which also does'nt fix the problem because the "expect" request from
> acroforms still is'nt correctly answered - its only not responded with
> 417.
> 
> 
> so i switched to apache 2.2.15 and tried the php-script for receiving
> acroforms post-data... with the same errorous results.
> post-data with size<1024 bytes is processed ok, 1024+ bytes will
> trigger "expect-100"
> i've added a screenshot which shows the behaviour:
> http://www.zimagez.com/zimage/bildschirmfoto-08062010-095118.php
> adobe reader sends expect-100, 300seconds after that the php script
> continues *without having received the post-data* to send the answer
> pdf which is received normally by the reader.
> 
> 
> since it seems the communication between adobe reader and the
> receiving webserver is the issue here i'm not quite sure this belongs
> to this mailing-list. but... maybe someone can help anyhow.
> 
> 
> 
> > Where is the error taking place?  In Acrobat/Reader during
> > submission?  On the server?  Other?
> > 
> > -----Original Message-----
> > From: camiku...@web.de [mailto:camiku...@web.de] 
> > Sent: Wednesday, June 02, 2010 9:19 AM
> > To: itext-questions@lists.sourceforge.net
> > Subject: [iText-questions] max number of comboboxes in a pdfform is
> > 85?
> > 
> > hi all,
> > 
> > i ran into a problem regarding the max number of comboboxes a
> > pdfform permits for an error-free submit via SUBMIT_HTML_FORMAT.
> > 
> > following code consists of tree files:
> > PdfForms.java - the test application i build after i ran into
> > problems with the real application FieldCell.java - some of you know
> > this code, insert a formfield in a table cell :)
> > 
> > for a complete test scenario:
> > get_post_vars.php - see the transmitted variables. will spool
> > readable output to /tmp/vars.txt and a success .pdf to the sending
> > acroreader. you'll need an additional "erfolg.pdf" in the same
> > directory on your testing webserver.
> > 
> > 
> > in PdfForms.java method addContent adds 85 textfields and
> > comboboxes, if you increase this to 86 the .pdf will still be
> > generated well but pressing the "push me" button on the end will
> > give a "text/html" error and the php-script on the webserver will
> > not catch any submitted variables whereas with 85 text/combo fields
> > everything works fine. iv'e added two single method calls of
> > addTextField and addComboBox after the 85 loop to see which field
> > might cause the error.. combobox
> > 
> > is it a "natural" restriction of adobe's pdf, a bug in itext or am i
> > doing something really stupid? if nothing helps i've got to try the
> > same amount+ checkbox-goups :/
> > 
> > 
> > PdfForms.java ##################################################
> > package pdfforms_test;
> > 
> > import com.itextpdf.text.BaseColor;
> > import com.itextpdf.text.Document;
> > import com.itextpdf.text.DocumentException;
> > import com.itextpdf.text.Paragraph;
> > import com.itextpdf.text.Rectangle;
> > import com.itextpdf.text.pdf.PdfAction;
> > import com.itextpdf.text.pdf.PdfAnnotation;
> > import com.itextpdf.text.pdf.PdfFormField;
> > import com.itextpdf.text.pdf.PdfName;
> > import com.itextpdf.text.pdf.PdfPCell;
> > import com.itextpdf.text.pdf.PdfPTable;
> > import com.itextpdf.text.pdf.PdfWriter;
> > import com.itextpdf.text.pdf.PushbuttonField;
> > import java.io.FileNotFoundException;
> > import java.io.FileOutputStream;
> > import java.io.IOException;
> > import java.util.logging.Level;
> > import java.util.logging.Logger;
> > 
> > public class PdfForms {
> > 
> >     private Document document;
> >     private PdfWriter writer;
> >     private static String pdfFile = System.getProperty("user.home")
> > + "/pdfforms_test.pdf"; private static String cmd =
> > "/opt/bin/acroread " + pdfFile; private static String httpAdress =
> > "http://localhost/get_post_vars.php";; private PdfPTable table = new
> > PdfPTable(1);
> > 
> >     private void addComboBox(String _fieldname) {
> >         String[] options = {"eins", "zwei", "drei", "vier"};
> >         PdfFormField comboBox = PdfFormField.createCombo(writer,
> > false, options, 0); comboBox.setWidget(new Rectangle(40, 780, 120,
> > 800), PdfAnnotation.HIGHLIGHT_INVERT);
> > comboBox.setFieldName(_fieldname); comboBox.setValueAsString("nix");
> > 
> >         PdfPCell cell = new PdfPCell();
> >         cell.setMinimumHeight(20);
> >         cell.setCellEvent(new FieldCell(comboBox, 20, writer));
> >         table.addCell(cell);
> >     }
> > 
> >     private void addTextField(String _fieldname) {
> >         PdfFormField textField =
> > PdfFormField.createTextField(writer, true, false, 500);
> > textField.setWidget(new Rectangle(150, 600, 300, 700),
> > PdfName._3D); textField.setFieldName(_fieldname);
> > 
> >         PdfPCell cell = new PdfPCell();
> >         cell.setMinimumHeight(40);
> >         cell.setCellEvent(new FieldCell(textField, 40, writer));
> >         table.addCell(cell);
> >     }
> > 
> >     private void addSendButton() {
> >         PushbuttonField pushButton = new PushbuttonField(writer, new
> > Rectangle(150, 560, 200, 590), "pushButton");
> > pushButton.setBackgroundColor(BaseColor.LIGHT_GRAY);
> > pushButton.setLayout(PushbuttonField.LAYOUT_ICON_TOP_LABEL_BOTTOM);
> > pushButton.setOptions(PushbuttonField.VISIBLE_BUT_DOES_NOT_PRINT);
> > pushButton.setText("push me");
> > 
> >         try {
> >             PdfFormField submit = pushButton.getField();
> >             submit.setAction(PdfAction.createSubmitForm(httpAdress,
> > null, PdfAction.SUBMIT_HTML_FORMAT));
> > 
> >             PdfPCell cell = new PdfPCell();
> >             cell.setMinimumHeight(40);
> >             cell.setCellEvent(new FieldCell(submit, 40, writer));
> >             table.addCell(cell);
> >         } catch (IOException ex) {
> >             Logger.getLogger(PdfForms.class.getName()).log(Level.SEVERE,
> > null, ex); } catch (DocumentException ex) {
> >             Logger.getLogger(PdfForms.class.getName()).log(Level.SEVERE,
> > null, ex); }
> > 
> >     }
> > 
> >     private void addContent() {
> >         for (int i = 0; i < 85; i++) {
> >             PdfPCell cell = new PdfPCell(new Paragraph("test"));
> >             table.addCell(cell);
> >             addTextField("text"+Integer.toString(i));
> >             addComboBox("combo"+Integer.toString(i));
> >         }
> > //        addTextField("a");
> > //        addComboBox("b");
> > 
> >         addSendButton();
> >         try {
> >             document.add(table);
> >         } catch (DocumentException ex) {
> >             Logger.getLogger(PdfForms.class.getName()).log(Level.SEVERE,
> > null, ex); }
> >     }
> > 
> >     private void showDocument() {
> >         try {
> >             Process p = Runtime.getRuntime().exec(cmd);
> >             p.waitFor();
> >         } catch (InterruptedException ex) {
> >             Logger.getLogger(PdfForms.class.getName()).log(Level.SEVERE,
> > null, ex); } catch (IOException ex) {
> >             Logger.getLogger(PdfForms.class.getName()).log(Level.SEVERE,
> > null, ex); }
> > 
> >     }
> > 
> >     private void close() {
> >         this.document.close();
> >     }
> > 
> >     public PdfForms() {
> >         try {
> >             this.document = new Document();
> >             this.writer = PdfWriter.getInstance(document, new
> > FileOutputStream(pdfFile)); this.document.open();
> >         } catch (FileNotFoundException ex) {
> >             Logger.getLogger(PdfForms.class.getName()).log(Level.SEVERE,
> > null, ex); } catch (DocumentException ex) {
> >             Logger.getLogger(PdfForms.class.getName()).log(Level.SEVERE,
> > null, ex); }
> >     }
> > 
> >     public static void main(String[] args) {
> >         PdfForms p = new PdfForms();
> >         p.addContent();
> >         p.close();
> >         p.showDocument();
> >         System.exit(0);
> >     }
> > }
> > 
> > FieldCell.java #################################################
> > package pdfforms_test;
> > 
> > import com.itextpdf.text.Rectangle;
> > import com.itextpdf.text.pdf.PdfAnnotation;
> > import com.itextpdf.text.pdf.PdfContentByte;
> > import com.itextpdf.text.pdf.PdfFormField;
> > import com.itextpdf.text.pdf.PdfPCell;
> > import com.itextpdf.text.pdf.PdfPCellEvent;
> > import com.itextpdf.text.pdf.PdfPTable;
> > import com.itextpdf.text.pdf.PdfWriter;
> > 
> > class FieldCell implements PdfPCellEvent {
> > 
> >    private PdfFormField formField;
> >    private PdfWriter writer;
> >    private int height;
> > 
> >    public FieldCell(PdfFormField _formField, int _height, PdfWriter
> > _writer) { this.formField = _formField;
> >       this.height = _height;
> >       this.writer = _writer;
> >    }
> > 
> >    public void cellLayout(PdfPCell cell, Rectangle rect,
> > PdfContentByte[] canvas) { try {
> >          PdfContentByte cb = canvas[PdfPTable.LINECANVAS];
> >          //cb.reset();
> >          formField.setWidget(new Rectangle(rect.getLeft(),
> >                  rect.getTop()-height,
> >                  rect.getRight(),
> >                  rect.getTop()),
> >                  PdfAnnotation.HIGHLIGHT_NONE);
> >          writer.addAnnotation(formField);
> >       } catch (Exception e) {
> >          System.out.println(e);
> >       }
> >    }
> > }
> > 
> > get_post_vars.php ##############################################
> > <?php
> > ob_start();
> > var_dump($_REQUEST);
> > $vars = ob_get_contents();
> > ob_end_clean();
> > $f = fopen("/tmp/vars.txt","w");
> > fwrite($f,$vars);
> > fclose($f);
> > 
> > function ReadfileChunks($filename) {
> > $chunksize = 1*(1024*1024);
> > $chunksize = 512;
> > $buffer = '';
> > $count = 0;
> > $handle = fopen($filename, 'rb');
> > if ($handle === false) { 
> > return false;
> > }
> > while (!feof($handle)) {
> > $buffer = fread($handle, $chunksize);
> > echo $buffer;
> > ob_flush();
> > flush();
> > }
> > $status = fclose($handle);
> > }
> > 
> > $filename="erfolg.pdf";
> > header("Pragma: public");
> > header("Expires: 0");
> > header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
> > header("Cache-Control: private", false);
> > header("Content-Type: application/pdf");
> > header("Content-Disposition: attachment; filename=\"danke.pdf\"");
> > header("Content-Transfer-Encoding: binary");
> > header("Content-Length: "....@filesize($filename));
> > ReadfileChunks($filename);
> > ?>
> > 
> > EOF ##########################################################
> > 
> > ------------------------------------------------------------------------------
> > 
> > _______________________________________________
> > iText-questions mailing list
> > iText-questions@lists.sourceforge.net
> > 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/
> > 
> > ------------------------------------------------------------------------------
> > 
> > _______________________________________________
> > iText-questions mailing list
> > iText-questions@lists.sourceforge.net
> > 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/
> 
> 
> ------------------------------------------------------------------------------
> ThinkGeek and WIRED's GeekDad team up for the Ultimate 
> GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
> lucky parental unit.  See the prize list and enter to win: 
> http://p.sf.net/sfu/thinkgeek-promo
> _______________________________________________
> iText-questions mailing list
> iText-questions@lists.sourceforge.net
> 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/
> 
> ------------------------------------------------------------------------------
> ThinkGeek and WIRED's GeekDad team up for the Ultimate 
> GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
> lucky parental unit.  See the prize list and enter to win: 
> http://p.sf.net/sfu/thinkgeek-promo
> _______________________________________________
> iText-questions mailing list
> iText-questions@lists.sourceforge.net
> 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/


------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
iText-questions mailing list
iText-questions@lists.sourceforge.net
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/

Reply via email to