我们目前使用旧的iText 2.1.7版本,但正在评估itextpdf 5.5.0。
我们在Libreoffice和Quartz(在Mac)上创建了PDF表单。
填写2.1.7中的表格(Stamper/setField等)没有任何问题。
随着5.5.0,但石英制作的表格工作正常,但在Libreoffice制作的表格没有。
基本上:通过FormFlattening(false)数据出现在最终文档(以及字段)中,但FormFlattening(true)数据(和字段)是空的。
我在LibreOffice和Quartz PDF之间看到的主要区别是所有字体都嵌入Quartz生成的PDF中。这是LibreOffice无法实现的。
这可能是问题吗?如果是这样,为什么2.1.7工作?
由于提前,
SnorriiText 5.5无法填写表格
回答
基本上:随着FormFlattening(假)的数据出现在文件的最后(以及字段),但与FormFlattening(真)的数据(和字段)是空的。
如果af
是你AcroFields
情况,请尝试关闭压模之前做
af.setGenerateAppearances(true);
。
PDF规范ISO 32000-1定义了一个NeedAppearances标志,参见表格218 - 交互式表单词典中的条目。如果它设置为true,PDF阅读器知道它必须为表单域创建外观流。
旧的iText版本完全忽略该标志,并始终在表单填写期间创建外观流。如果标志不是true(在另一种情况下观看者将重新创建这样的外观),则新的iText版本尊重该标志并且仅在填写表格时创建外观流。
当扁平化表单时,iText只是将表单元素的外观嵌入到页面内容中。因此,如果在填充期间没有为某个字段创建外观流,则该值将不会出现在拼合文档中。
使用setGenerateAppearances(true)
您可以强制执行外观流生成。
非常感谢mkl。这个窍门! – user3733812
这个解决方案已经过去了一段时间,但是经过许多小时的研究,你帮了我很大的忙。 – tom3008
- 1. 无法填写表格使用分裂
- 2. itext填充表
- 3. 填写表格
- 4. iText填充现有表格PDF
- 5. 填写表格horiziantally
- 6. 填写pdf表格后数字签名无效
- 7. Rails:填写无效数据表格
- 8. 无法填写listView?
- 9. iText格式表
- 10. 无法使用iText写入pdf
- 11. Django的:从get方法填写表格
- 12. 无法验证表格已填写CasperJS&jQuery
- 13. 我无法填写表格中的选择
- 14. 我无法填写数据库表
- 15. iText的PDF格式字段没有填写文档方向
- 16. TYPO3:表格提交后填写表格
- 17. 使用表格数据填写表格
- 18. iText PDF填写表格并在必要时滚动到第二页
- 19. 从iOS填写PHP表格
- 20. 填写表格用C#
- 21. 填写表格离线
- 22. js表格填写检查
- 23. 在PHP中填写表格
- 24. 从html填写PDF表格
- 25. 填写在线表格
- 26. 自动填写表格
- 27. JS书签填写表格
- 28. 填写表格在Python
- 29. 用flex填写表格pdf
- 30. 自动化表格填写
你是在你的机器上还是在生产服务器上测试它?我对iText知之甚少,但是一旦我在生产服务器上遇到字体问题,因为iText会搜索操作系统上安装的字体。它的罐子里只嵌入了一些字体。 – rcarraretto
谢谢你的评论,但mkl的答案做到了。 – user3733812