java PDF格式文本隐藏,除非单击

ct2axkht  于 2023-05-21  发布在  Java
关注(0)|答案(9)|浏览(267)

在我的应用程序中,我必须用DB中的数据填充预定义的PDF表单。我们使用Java和Pdfbox。填料本身不是问题。
问题是,在生成的PDF文件中,除非单击字段,否则表单中的所有文本都是不可见的(或隐藏的,也是灰色矩形)。
我该如何解决这个问题?

mm5n2pyu

mm5n2pyu1#

当我尝试使用pdfbox以编程方式填充PDF表单时,也遇到了同样的问题。我将这个答案添加到一个相当老的问题中,因为所有其他答案都操作原始PDF,这并不总是一个选项。
不可见表单域的问题刚刚出现在Acrobat PDF中,其他PDF渲染器显示它很好。如果使用pdfbox 1.8.x,您必须按照here的说明设置Need Appearances

PDAcroForm form = docCatalog.getAcroForm();
form.getDictionary().setItem(COSName.getPDFName("NeedAppearances"), COSBoolean.TRUE);

如果使用pdfbox 2,则简化为:

PDAcroForm form = docCatalog.getAcroForm();
form.setNeedAppearances(true);
gt0wga4j

gt0wga4j2#

我在Java中用PDFBox填写表单时遇到了这个问题。
我通过在Acrobat Pro中打开原始(空白)PDF表单并更改每个问题文本字段的一些选项来修复它。你的选择可能会有所不同,但以下是我的工作:
在Acrobat Pro菜单栏中,转到“表单”>“添加或编辑字段”。右键单击Acrobat Pro中的文本字段并选择属性,然后:
在“选项”选项卡中:

  • 取消勾选除'滚动长文本'以外的所有选项
  • 在“默认值”框中添加几个空格字符

在“外观”选项卡中:

  • 将字体大小设置为“自动”

单击“关闭表单编辑”并保存文件。

vxqlmq5t

vxqlmq5t3#

我在一个论坛上读到了这篇文章,并为我工作:
使用Adobe Acrobat Pro,我使用“导出数据”将表单导出为XML,然后使用“导入数据”将其从XML文件导入。这些命令位于表单/管理表单数据下
这是我的第一次。http://forums.adobe.com/thread/637421

oxf4rvwz

oxf4rvwz4#

我只是偶然发现了这一点,并尝试了一个非常简单的事情之前,一个组合的东西工作。我有Adobe Acrobat 9.0,我找不到这里写的一些选项。
我最终做的是一个双管齐下的过程:我进入【表单】>【管理表单数据】>【导出数据】;然后我将该文件保存在桌面上。接下来,我回到表单>管理表单数据,但选择了导入数据,并选择了我刚刚保存的文件。答对了!一切都填好了。

2izufjch

2izufjch5#

我不太知道你怎么能阻止它在未来发生,但一个解决方案,以获得文件的工作,类似于g-eorge是打开它在adobe acrobat pro,在工具的右手菜单选择“互动对象”,并选择选择对象。
高亮显示要修复的第一个字段时,您应该能够使用control-a选择所有交互对象。选择所有字段后,右键单击一个字段并选择属性。
在“常规”选项卡底部的选项应该有“公共属性”,其中有选项“表单字段”将其更改为隐藏,然后返回到可见。这将恢复窗体的所有可见性。
当我收到这个的时候,这对我来说是非常罕见的,而且一次也没有失败过。希望对你也一样,
BoB

up9lanfz

up9lanfz6#

在每个错误隐藏的对象的外观选项卡中,您将看到“填充颜色”设置为无。再次将其设置为无(只需单击它)并保存PDF,这些字段将正常显示。我不敢相信adobe让这个错误持续了这么久。当使用多个PDF阅读器查看/保存时,它会经常发生。

mkshixfv

mkshixfv7#

我在这里尝试的一切都不起作用--除了改变软件。
我正在使用PDFElement 6 Pro(试用版),无法使其工作。尝试了各种各样的事情与PDFBox加上所有建议以上。
最后尝试了https://www.pdfescape.com/,一切都工作得很好。

mklgxw1f

mklgxw1f8#

在我的情况下,我解决了它,改变字体为Arial(或一个标准的窗口设置),在'外观'标签,在属性。之前,它被设置为Helvetica,而Helvetica没有嵌入到文件中,我认为这是产生问题的原因。

mbyulnm0

mbyulnm09#

Map所有文本表单字段,并以编程方式在PDF字典中删除DA,MK和AP条目-这些是对样式的引用,因此它们可以包括其他机器可能没有安装的字体等内容,因此默认情况下它们显示为空白。

相关问题