首先,请允许我感谢SO社区帮助我很多次在过去的; 你们是一个惊人的资源!
在我的工作,我对使用中的scribus和iText的Java库创建从我们的数据库使用数据填充模板PDF模板的Web应用程序的工作。 有时,用户提供的字段是必需的,而不是由iText的感动。 当.PDF下载,现场编辑,和副本保存了Evince生成的文件将不会显示在重新打开编辑的文本。 然而,在编辑后场的焦点,它会显示已保存的文本。 无焦点的方式,文本消失。 剪切的文本,粘贴回场; 它保持可见 - 直到您保存并重新打开该文档。 保存后并重新打开原来的问题清单。 我发现关于这个问题许多极其相似的帖子,但没有一个解决方案,这似乎为我工作。
此外,问题是古怪。 如果我打开了Evince用的模板的scribus(由iText的.pdf文件不变),然后编辑字段并保存,他们会正确显示在重新开放。 一旦库接触到模板,但是,出现问题。 同样,我可以重现与同时寻找这个问题的原因我已经找到了PDF文件的问题; 像这个:
http://www.quask.com/samples/pdfforms/pcpurchase.pdf
这使我相信,行为不当的文件可能以某种方式被损坏,这iText的可能是我的问题的原因,但iText的是不是我可以重现这个问题,使我不知道的唯一途径什么认为。 我似乎无法找到许多我见过之间的工作液。 是否有人在这个问题足够的熟悉,能够告诉我在哪里可以得到这样或底部提供关于我使用的工具的一些见解? 有很好的机会,如果你使用谷歌搜索的问题,我已经看到了..
我使用Ubuntu 12.04(精确),表示出3.4.0,2.1.5的iText,并可以尝试填补你在应要求任何其他相关细节。 我担心张贴任何代码,因为我不知道它是犹太教,并能正常工作为构建形式除非这个具体问题; 更何况,我可以重现该问题,而无需使用Web应用程序我们的事实。
这是我的第一篇文章在这里,我是新手程序员(还在上学!),所以请不要让我知道,如果我违反任何约定或能改善我的未来以任何方式查询。
谢谢你尽你所能的帮助!
通过jbowman在评论他的问题提供的文件的检查---特别是关于密码字段(这是场通过了Evince entually填写之一)---显示:
Template.pdf
- 是将其通过的scribus PDF库1.4.1.svn生成的原始形式;
- 包含9个字段,并设置为真标志NeedAppearances一个AcroForm;
- 具有密码字段(名为passwordField),其包含一个空值和正常的外观流画用空文本的矩形。
after_itext.pdf
- 在原始形式用Itext 2.1.5编辑,不幸的是不能在将做分析更容易追加模式;
- 包含具有8个字段(部件号字段已被填充在和扁平)未经NeedAppearances标志的Acroform;
- 有密码字段(名为passwordField:u4woYY1FK9)值和外观保持不变。
after_itext_edited.pdf
- 现在通过在附加模式一些其它软件(了Evince)编辑以前用Itext编辑的形式;
- 包含无NeedAppearances标志8个字段的Acroform; 只有已作出领域的变化passwordField:u4woYY1FK9和memberPrefix:u4woYY1FK9:
- 有密码字段(名为passwordField:u4woYY1FK9)与新的关联值ASDF但也留下了出场不变;
- 有成员前缀字段(名为memberPrefix:u4woYY1FK9)与新的关联值ASDF但也留下了出场不变。
因此,观察到的行为未示出默认值,是可以预料:
最后Acroform没有NeedAppearances标志。 这个标志是在规范中定义2008:ISO 32000-1为:
一个标志,指定是否构造外观流和外观字典对于文档中的所有微件的注释(见12.7.3.3“可变文本”)。 默认值:false。
因此,在其最终形式PDF文档说:对小部件没有出现(如AcroForm场可视化)需要生成,采取从文档中出场。
从文档的密码域的外观是原单,与空文本的矩形。
所以你看这个空矩形。
当你点击进入该领域,PDF阅读器准备编辑的内容,因此它认为合适的显示值。
如果用了Evince编辑PDF文件的目的是有明显的效果,表示出在改变字段的值还必须添加更新的外观流或确保AcroForm NeddAppearances标志。 因此,这就是表示出失败。
我已经接受了MKL的答案,因为它击中关于为什么字段不正确显示了要害,并包含更多的信息比我能就这个问题提供。 然而,在回答的意见建议的修复没有工作,因为使用的iText 2.1.5的生成文件(在这种特殊情况下) PdfCopyFields
,不尊重(条)的原始文档的NeedAppearances标志,并调用setNeedAppearances(true)
为AcroForm
没有解决,因为这个问题。
黑客createAcroForms()
在方法PdfCopyFieldsImp
为包括线
form.put(PdfName.NEEDAPPEARANCES, PdfBoolean.PDFTRUE);
是最终似乎已经解决了这个问题对我来说。 有了这个此外,表示出正确显示保存和重新打开文档后更改领域。
文章来源: Editable .pdf fields disappear (but visible on field focus) after save with evince