当前位置: 首页 > 面试题库 >

保存后,可编辑的.pdf字段消失(但在字段焦点上可见)

赵镜
2023-03-14
问题内容

首先,让我感谢SO社区过去提供了很多次帮助我;你们是一个了不起的资源!

在我的工作中,我在一个Web应用程序上工作,该应用程序使用在Scribus和iText
Java库中创建的PDF模板,以来自数据库的数据填充这些模板。有时,用户提供的字段是必填字段,iText不会触及。下载.pdf时,将编辑一个字段,并使用Evince保存一个副本,重新打开后生成的文件将不会显示编辑后的文本。但是,一旦聚焦于已编辑的字段,它将显示已保存的文本。散焦,文字消失。剪切文本,粘贴回字段;它保持可见状态-
直到您保存并重新打开文档。保存并重新打开后,原始问题清单。我找到了许多与这个问题极为相似的帖子,但是似乎没有一种解决方案适合我。

另外,问题是古怪的。如果我用Evince打开Scribus模板(iText未触及.pdf文件),然后编辑字段并保存,则重新打开后它们将正确显示。但是,库接触模板后,就会出现问题。同样,我可以用寻找问题原因的PDF文件重现该问题。像这个:

http://www.quask.com/samples/pdfforms/pcpurchase.pdf

这使我相信行为不当的文件可能以某种方式被损坏,而iText可能是导致我出现问题的原因,但是iText并不是我可以重现此问题的唯一途径,因此我不确定该怎么做。认为。在我见过的众多解决方案中,我似乎找不到合适的解决方案。是否有人对这个问题足够熟悉,可以告诉我在什么地方可以深入了解该问题或提供有关所使用工具的一些见解?如果您使用Google搜索该问题,则很有可能看到了它。

我正在使用Ubuntu 12.04(精确版),Evince 3.4.0,iText
2.1.5,并且可以根据要求尝试填写其他任何相关详细信息。我不确定要发布任何代码,因为我不确定它是否是Kosher,并且除此特定问题外,它对于构建表单都适用。更不用说我可以在不使用我们的webapp的情况下重现问题的事实了。

这是我在这里的第一篇文章,并且我是程序员(还是在学校!)的新手,所以请让我知道我是否违反了任何约定或可以以任何方式改善我的未来查询。

谢谢你尽你所能的帮助!


问题答案:

检查jbowman在对其问题的评论中提供的文件—特别注意密码字段(这是通常由evince填写的字段之一)—:

模板.pdf

  • 是Scribus PDF Library 1.4.1.svn生成的原始表单;
  • 包含一个具有9个字段的AcroForm,并将标志NeedAppearances设置为true;
  • 具有一个密码字段(名为passwordField),其中包含一个空值和一个 正常的 外观流,该流使用空白文本绘制一个矩形。

after_itext.pdf

  • 是iText 2.1.5编辑的原始表单,不幸的是不在附加模式下,这会使分析更加容易;
  • 包含一个具有8个字段的Acroform(成员编号字段已填写并展平),没有NeedAppearances标志;
  • 具有密码字段(名为passwordField:u4woYY1FK9)的值,外观保持不变。

after_itext_edited.pdf

  • 是以前由iText编辑的表单,现在由其他软件(证据)以附加模式编辑的表单;
  • 包含一个具有8个字段且没有NeedAppearances标志的Acroform;对字段passwordField:u4woYY1FK9和memberPrefix:u4woYY1FK9所做的唯一更改是:
  • 密码字段(名为passwordField:u4woYY1FK9)具有新的关联值 asdf, 但其外观保持不变;
  • 具有具有新的关联值 asdf 的成员前缀字段(名为memberPrefix:u4woYY1FK9),但其外观保持不变。

因此,可以观察到默认值未显示的观察到的行为:

最终的Acroform没有NeedAppearances标志。ISO
32000-1:2008
规范中将该标志定义为:

一个标志,用于指定是否为文档中的所有小部件注释构造外观流和外观字典(请参见12.7.3.3,“变量文本”)。默认值:false。

因此,您的PDF文档的最终格式为:无需生成窗口小部件的外观(例如AcroForm字段可视化),只需从文档中获取外观即可。

文档中密码字段的外观是原始的,带有空白文本的矩形。

因此,您会看到一个空矩形。

当您单击该字段时,PDF查看器将准备编辑其内容,因此将显示它认为合适的值。

如果使用evience编辑PDF文件的目的是为了获得可见的结果,则更改字段的值后,evince 还 必须
添加更新的外观流,或确保设置了AcroForm NeddAppearances标志。因此,这是证据失败的地方。



 类似资料:
  • 本文向大家介绍jQuery+PHP实现可编辑表格字段内容并实时保存,包括了jQuery+PHP实现可编辑表格字段内容并实时保存的使用技巧和注意事项,需要的朋友参考一下 本例适用场景:当查看详细资料,如用户详情信息,发现其中某几个字段信息需要修改,可直接点击该字段内容进行修改,节约了用户时间,(传统的做法是进入一个编辑页面,列出所有编辑的字段信息,即使你只需要编辑其中一两个字段内容,然后点击提交)提

  • 我现在正在学习表单PDF的基础知识。输入字段值后,我可以将带有数据的pdf保存为pdf文件。使用Acrobat pro,我可以导出FDF和XFDF文件中的数据。我们需要开发一个网站,允许用户在浏览器中填写一些表格pdf,最好下载为充满数据的pdf表格。PDFTron是一个很好的解决方案,但看起来我可以从中下载FDF文件或XFDF文件或扁平pdf。用户应该能够修改下载的表单。PDFTron能做到这一

  • 我们有一个系统,创建预先填写的PDF合同,然后我们需要发送给客户签名,也允许客户更新可能包含错误信息的字段。 这里有一个解决办法或选择,但我希望有更好的方法 1)不要使用生成PDF的模板引擎,而是将这个负担移到Docusign中。然后我们可以使用Docusign中的文本选项卡来预填充字段并保持其可编辑性。

  • 问题内容: 我对AngularJS有疑问。如果我使用xeditable 我无法输入浮点数…那么,如何添加浮点数并在视图中进行浮点验证? 问题答案: 您需要将标签的属性设置为“ any”。 解决此问题的一种方法是利用xeditable的语法,其中您指定的任何开头的属性都将传递到基础输入标签:

  • 问题内容: 呈现组件后,将焦点设置在特定文本字段上的反应是什么? 文档似乎建议使用引用,例如: 在渲染函数中的输入字段上进行设置,然后调用: 但是我应该在哪里称呼它?我已经尝试了几个地方,但无法正常工作。 问题答案: 您应该这样做,而不是。像这样