【问题标题】:Trying to use iText to fill a PDF Form for my java application on Google AppEngine尝试使用 iText 在 Google AppEngine 上为我的 java 应用程序填写 PDF 表单
【发布时间】:2017-08-28 09:44:42
【问题描述】:

我正在尝试使用 iText Api (5) 填写 PDF 表单。

OutputStream out = resp.getOutputStream();
PdfReader reader = new PdfReader(IOUtils.toByteArray(new FileInputStream(filePath)));
reader.unethicalreading=true;
PdfStamper stamper;

      try
      {
        stamper = new PdfStamper(reader, out);
        AcroFields form = stamper.getAcroFields();

        form.setField("form1[0].#subform[0].Line3_StreetNumberName[0]", employee.getAddress());
        form.setField("form1[0].#subform[0].Line3_CityOrTown[0]", employee.getCity());
        form.setField("form1[0].#subform[0].Line3_State[0]", employee.getState());
        form.setField("form1[0].#subform[0].Line3_ZipCode[0]", employee.getZip());
        stamper.flush();
        stamper.close();
      } catch(DocumentException e) {
        e.printStackTrace();
      }
    reader.close();
    out.flush();
    out.close();

当我在本地开发服务器上运行应用程序时,一切都成功了,我在浏览器上显示了一个完美的 PDF,所有相关字段都填充了正确的值。

问题:另一方面,当我在应用引擎上部署应用并对其进行测试时,我得到一个充满垃圾字节的页面

%PDF-1.7 %âãÏÓ 1 0 obj <>>>/BBox[0 0 240 18]/FormType 1/Matrix [1 0 0 1 0 0]/Length 144/Filter/FlateDecode>>stream Œh˜k€Ö}ØlÄSÉ„p~0µ]«b,â›sv›«‚2`§S"«ÿpÆ,85¢­`¼€ä›ð—eŒٳh,Þ®Hé­ïþéñþì?îù§KÑ÷"÷+¶qÔk¹‡Ž=)i[q†dEa†¨h™ …¼«OêÓEÇèNÝÿ¡*Þãól†8*O endstream endobj 3 0 obj <>/BBox[0 0 186 18]/FormType 1/Matrix [1 0 0 1 0 0]/Length 48/Filter/FlateDecode>>stream ¨P=»û+º÷Õ€Ri¸BóÍo›èÀ‚¿yÒúñAtŠÔAj4Á‚ºu‡Ã}“ endstream endobj 4 0 obj <>/BBox[0 0 132 18]/FormType 1/Matrix [1 0 0 1 0 0]/Length 48/Filter/FlateDecode>>stream FÌz¶YŠY]™~zk3R<A›‰â(–¿T’zjv3›ÇÃrÅ]éTü¾…ÝuÁ5 endstream endobj 5 0 obj <>/BBox[0 0 36 18]/FormType 1/Matrix [1 0 0 1 0 0]/Length 48/Filter/FlateDecode>>stream i\ޱÊ3Ny/iæú+1ö¬ó¶vöV(”k6ÜÔN‹wÀ9¡K»]Ñfs!Õ endstream endobj 6 0 obj <>>>/BBox[0 0 72 18]/FormType 1/Matrix [1 0 0 1 0 0]/Length 128/Filter/FlateDecode>>stream í5:NÙOúŒî/å÷ÈT?¤âúîè6ŽØq¶º' e„Xƒ?c€¦ƒß߯˜¤@\»FJà•o™˜¨užÞc´y•‰°ý¨X³¶U —Ì[Òƒê;yï:MÃÁsÏm»)zzó‘|QÔ ˜„þƆv5í±È±ya¬ endstream endobj 7 0 obj <>/BBox[0 0 84 18]/FormType 1/Matrix [1 0 0 1 0 0]/Length 48/Filter/FlateDecode>>stream +¥Žkô„Wêá¹+FÇA‘¶@7ä :|{鯭ì‡8§'0RðZ£kž¼ ç!IÓ endstream endobj 8 0 obj <>/BBox[0 0 240 18]/FormType 1/Matrix [1 0 0 1 0 0]/Length 48/Filter/FlateDecode>>stream YÚ‰¸SÎuOÏBì¶ß3§3 ¹ÿ=lN·sØÞhñ=HN•a‰À¦Øœ=ô endstream endobj 9 0 obj <>>>/BBox[0 0 258 18]/FormType 1/Matrix [1 0 0 1 0 0]/Length 144/Filter/FlateDecode>>stream h-õÇZ6ꢗ‹vf Áü+€ƒçsŸÜ#ºÿ…U4ðº&ÞØ”Ì·•5ZJçØÞ¬Þ-¤ŠÜ• ͳU%‚p å¥ÍÙl°<,6‹Å¯ßÔ´Ïg‡ôªÿY£ú4+à—Ïz Cìa£òr^ƒ§ÈÔEÂBòB8¡ài¨ádÑäÞ1EV^…$7Ïu¾z… endstream endobj 10 0 obj <>>>/BBox[0 0 257.94 36]/FormType 1/Matrix [1 0 0 1 0 0]/Length 176/Filter/FlateDecode>>stream í§¿ TÏLX×ÙäPæPIbÉˉƨûìÅ¿fÑÉoÐmBä»Äÿ×2™*ðl·0Ñ3–9%àññ-ò¡pa98q ߆žóþòe=0q©¸Cê†bq¿`ô艅¶•Va~Îsf„͘– ]J  †ö ÝDÝ¿š:Óœ#]ÇÍæB9–o(•Åyc»¨¢™}ÉܸÐhµ•NìñÁ¿Eï¥)·tvÑÃcæ±rÅ>D endstream endobj 11 0 obj <>/BBox[0 0 240 18]/FormType 1/Matrix [1 0 0 1 0 0]/Length 48/Filter/FlateDecode>>stream $hÚ9CÀ¥Ÿ}`‘yšùÈfÞÊýlÙ u }ü4ßÊü6cïDÕeïŸ^ë¥ endstream endobj 12 0 obj <>stream ¸#6’Œ¸Áh¢«z!ª{*Ï݃Pÿ"®0H;wÙ0ÀæŽöG»ñ#† 8ÿDæˆÌñ^ñyNŠõS2j¨5ã"¶{#›À;‚ŠºLn÷„2BüÛ[¡1×VÈ–ª‹ò=GYL|D*>¬Ní´G<ò·åF\0ï Aé/m~£y„ð)PVØ’B'ø"y%ñ’µ|ÞŸîÇ”Ku„N/<´öõ@L–„ÖpPͪòãxù!d0ñNžì-iŽœvï½Êç5Ø÷¶hÇ*€¸'ÇóÁß0 í…ŒgTœ&w¢„uÔ^RjúCàcF&–¤ùjÊßgZ¤—J6|ˆ\ÈW3}À”-à¸{-ñ›Ñ†9O \™æ$}Í¡?«{ƒy2A]õúƒØ>£68‰¤|êÄ>Cc’e-K/ 9÷ìRëÛÒÄ›¢Ù‘@hc/ޱAÂ×W^‘Џ¥*RïkÁä¼å1QEáUÌ~»ß;4€¢æ6µÌ*]á9Ïà-™ Fù ýÒ©ì©›÷¾@µ"¢o1Ä|VnJÎPŒÿ§k‚ãã %ÕbOÊBÇ*î›Ýõóƒøüî  ¹Ë¿PŠB+ÖÁh…Žž%Uüõ3.ñ|Ó}|Š’=A\E…4·våñP}ZêcrsÌZ1eg{š ¹pÌÈ]ìoIaYñš‰.…¥äÂ8í„h(èiJ,SB úqöÁt;4†ËßB@%’æÊ%íg¡–²ã•ÛZ3ã[#Ä‹ñ…0ž¾Óo*9ÏÔÄVJ¹§)¬zeÒÅW·i}“@H¿B†¦L)®Ô²…Ç'ŸÈÄ#°‹£Ÿ‚)VˆÅcR»`ÆK¥º¾àêÇ~£‘õˆ‘v†¥ ÏCä›Iʽ¨_¼E5[bèø8Úä#Ǧöí™ùk@(õV–ðïîiG\„—ÔZgŽ“\U®­Yrï²Ô'[”½¿{a¬æw®!A –Œùå>‰F¦––岬;†åé(sÞ>^ªVCEmó¸À“‡ÊåíÞI(¹¹rR*ÄŸW›‡žDžøêŒxR衊å\žã‡¢¤åJçi‡%‡œÎI@ùIOïV™þÛ;à¥ÌÞUóÂ(õD¶©j‹W››æŠlÜ›D'wˆîágäZ¼TvÑÆÂ2ÕrS;Bз“ÆÌåøDÃÁ}p”ZõJ¦NPyQ{]©û‹ñ›Àãp”0$n9µÆ.Ùžú€LAÀ|ЋÈIDx1ÇÉ& ](œÄ7€Ý§Ëw[—b·Iv    'íL×RmÏ‚‚¤xNu¶þœz³â:Wê´×[›Î—ɘMÆŸ^»ï<ŽaëCz:ölBçï…Ò¬G4¸÷ŽÃëi¥)áèW?UL@X’z59EâhÃd·©Î0ÍuTar÷Èà ¤«Á7º‘6O˜€ƒú$š¦ì²”P¹”54V.%ó"±‹g®[C éŠþ=WU€£0]ó|—/«òŽUŽ©Ët®ñMªì1ßG‹çߦÔe«º#HëÂw¯uœò    9   Ò¿9°~³£¦°‚ÅJ¨äw’ÿ³žÌåeëªÚd²÷üJ÷"î忼L»«¹Íüç_ÆmmF‹¬fZ­íâ!hã â¼½ñÁH³Nq^ΗÍoúgÈQ¯Ú01“&¼ƒ   ¢ïX†n·pùdPslPãk¯ý«ÇwÂðd;o¯%«¿˜5_Å´æ’¹Iå•}­‚z ò/n!eT)[«r¡o“…qŠî$9KcùšÍs‘§{3ü0SÛ$‘^µ¹€Ìàâ¬&Pi,(<$Æ£š³CK‚[„’ªOqÛÎ߇®jëL! `k•BL•'ÇýÅp\@“¶vü¸­JÈ£¬t7UgSkºÉYÞ¥ÙLÚÅ*G;¦„ãõŒ<žò«å½Ï‘O…ÜÌleñKÈ×XŒÞÍ÷éÒN;8œb(€Ì×­ëÿ–,^źµÖlx± %ÞS¨ÃÚw€ºòÜ'˜Z-NËåÔSžSW NJñ^Dö^£³U,—y¹cõ ¡UpÓîÚ"ø©™ÜƒÉ? ƒ Z ‡ÆŒ”Ö(fqﵫ%|[rüÌc¿/ßûWˆ¦,!©qSí²^éLñè²vVûB"½±ßp?âÝâáP2¡¾zŒ¦ž¸™[ÌWÌ6öI x¾ÕöÆÚ‡Ä¥½á5e¿d…¼Ì¶˜·×ü‰;iß™¥;Z«rš&ß1+p‹C1ÔR±ƒå¬rIÃ}³LsÅùÉ{ù›†ˆ

请帮我在这里找出我的错误。

非常感谢..

【问题讨论】:

    标签: java forms google-app-engine pdf itext


    【解决方案1】:

    我可以通过将此代码添加到 servlet 来解决这个问题,并且 GAE 也开始工作了。

    resp.addHeader("Content-disposition", "attachment; filename=" + "xxx.pdf");
    

    resp.setContentType("application/pdf");
    

    第一个代码将下载 PDF 文件,第二个代码将在浏览器中打开 PDF。

    我不确定为什么它在不添加这些标头的情况下在本地开发环境中正常工作并且在应用引擎上失败了?

    【讨论】:

      猜你喜欢
      • 2011-12-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2014-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多