gpt4 book ai didi

java - PDF clown 使 PDF 字段变得不可见

转载 作者:太空宇宙 更新时间:2023-11-04 07:40:25 24 4
gpt4 key购买 nike

我使用PDF Clown的Java版本填写 PDF Acroforms 的字段。这非常有效,我能够以编程方式填写表单并保存它们,没有任何问题。

但是,某些 PDF 查看器会使我填写的字段中的某些文本不可见,除非您单击它们,在这种情况下它们会变得可见。这个forum post解释说,这种情况通常会发生在可填写表单的 PDF 中,并且可以通过将 PDF 字段的背景颜色设置为“无”来解决此问题,即使 GUI 已经表明背景颜色为“无”。这对其他人有效,我想为自己尝试一下。

不幸的是,我一直不知道如何在 PDFClown 中实际执行此操作。Field 类没有像 field.setBackgroundColor(null) 这样的直接方法,而且我无法找到使用其他访问器方法(例如 getDefaultAppearanceState())来实现此目的的方法。

有人知道如何在 PDF Clown 中执行此操作吗?

编辑:可以找到包含此问题的示例 PDF here 。此 PDF 中的所有内容均由 PDF clown 填充。请特别注意,左上角的两个字段(标有“名称”)在单击之前是不可见的。右侧的五个字段在单击之前也是不可见的,但“魅力”字段除外,该字段之前是不可见的,但后来我手动输入了值,然后它就变得可见了。其他所有内容均由 PDF Clown 放入,但与其他字段不同的是,它们是可见的。

编辑2:后来发现,只有当您覆盖现有的可填写表单的字符表中的值时才会发生这种情况。原版可下载here .

最佳答案

作为初步分析:

几乎与我原来的评论中所怀疑的一样,字段“Name Line 1”包含值(字段字典V)“Doc Lightning”,但包含正常的外观流(字段字典AP -> 外观字典,键N),不显示任何文本。

此外,交互式表单字典条目NeedAppearances未设置为true;因此,PDF 查看器会相信外观流是最新的。仅当您单击该字段并因此发出要编辑的信号时,PDF 查看器才会生成流的新外观,这是它自己制作的外观,它完全理解编辑任务。

如果您填写了该表单字段,并且之后没有其他工具更改您的结果,那么您的代码或 PDF Clown 中可能存在问题。请提供一些独立的示例代码和尚未填写的文档来重现该问题。

编辑:

我刚刚将当前(主干)PDF Clown AcroFormFillingSample.java 示例应用到尚未填充的字符表(即由文件的初始 1458834 字节组成的修订版),结果很好,即使不单击所有字段内容也是可见的。因此,您的源代码中有一些特殊的东西...(或者您使用旧版本吗?)

详细信息:

character sheet of Doc Lightning 的第 1 页引用对象162中的注释:

/MK      <<>>
/F 4
/Type /Annot
/Subtype /Widget
/Rect [37.0108, 617.055, 156.923, 631.717]
/FT /Tx
/DA /Helv 12 Tf 0 g
/T (Name Line 1)
/V (Doc Lightning)
/P 47 0 R
/AP 537 0 R

因此,该字段的值确实是“Doc Lightning”。

另一方面,对象 537 中的外观字典引用普通外观流:

/N       538 0 R

对象 538 中的流仅包含:

/Tx BMC
q
1 0 0 1 2 -7.331 cm
/Helv 12 Tf
Q
EMC

因此,正常外观流在字段中定位(相应地设置当前转换矩阵)并选择字体(Helvetica,在资源中正确定义,顺便说一句),然后打印...什么也没有!

交互式表单字典(对象 144)根本不包含 NeedAppearances 条目。根据PDF规范ISO 32000-1:2008 ,表218,此条目为

A flag specifying whether to construct appearance streams and appearance dictionaries for all widget annotations in the document (see 12.7.3.3, “Variable Text”). Default value: false.

因此,当不显示“Name Line 1”的值“Doc Lightning”而是显示空外观流时,PDF 查看器的行为就像预期的那样。

关于java - PDF clown 使 PDF 字段变得不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16136671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com