在我的应用程序中,我必须使用数据库中的数据填写预定义的 PDF 表单。我们正在使用 Java 和 Pdfbox。填充本身不是问题。
问题在于,在生成的 PDF 文件中,除非单击字段,否则表单中的所有文本都是不可见的(或隐藏的,也是灰色矩形)。
我怎么解决这个问题?
在我的应用程序中,我必须使用数据库中的数据填写预定义的 PDF 表单。我们正在使用 Java 和 Pdfbox。填充本身不是问题。
问题在于,在生成的 PDF 文件中,除非单击字段,否则表单中的所有文本都是不可见的(或隐藏的,也是灰色矩形)。
我怎么解决这个问题?
当我尝试使用 pdfbox 以编程方式填写 PDF 表单时,我遇到了同样的问题。我将此答案添加到一个相当古老的问题,因为所有其他答案都在操纵原始 PDF,这并不总是一种选择。
不可见表单域的问题刚刚出现在 Acrobat PDF 中,其他 PDF 渲染器显示它很好。如果使用 pdfbox 1.8.x,您必须按照此处Need Appearances
的说明进行设置:
PDAcroForm form = docCatalog.getAcroForm();
form.getDictionary().setItem(COSName.getPDFName("NeedAppearances"), COSBoolean.TRUE);
如果使用 pdfbox 2,则简化为:
PDAcroForm form = docCatalog.getAcroForm();
form.setNeedAppearances(true);
我用 Java 中的 PDFBox 填写的表单遇到了这个确切的问题。
我通过在 Acrobat Pro 中打开原始(空白)PDF 表单并更改每个问题文本字段的一些选项来修复它。选项可能因您而异,但这对我有用:
在 Acrobat Pro 菜单栏中,转到表单 > 添加或编辑字段。右键单击 Acrobat Pro 中的文本字段并选择属性,然后:
在“选项”选项卡中:
在“外观”选项卡中:
单击“关闭表单编辑”并保存文件。
我在论坛上阅读了这篇文章并为我工作:
使用 Adobe Acrobat Pro,我使用“导出数据”将表单导出到 XML,然后使用“导入数据”将其从 XML 文件导入回来。这些命令位于表单/管理表单数据下
在一个非常简单的事情起作用之前,我只是遇到了这个并尝试了多种事情的组合。我有 Adobe Acrobat 9.0,但我找不到这里写的一些选项。
我最终做的是一个两管齐下的过程:我去了Forms > Manage Form Data > Export Data;然后我将该文件保存在我的桌面上。接下来,我回到 Forms > Manage Form Data 但选择了Import Data,并选择了我刚刚保存的那个文件。答对了!一切都正确填写。
在每个错误隐藏对象的外观选项卡中,您将看到“填充颜色”设置为无。再次将其设置为无(只需单击它)并保存 PDF,这些字段将正常显示。我不敢相信 adobe 让这个错误持续了这么久。当使用多个 pdf 阅读器查看/保存时,它会不断发生。
我不太清楚将来如何阻止它发生,但让文件正常工作的解决方案,类似于 g-eorge 是在 adobe acrobat pro 中打开它,在右侧菜单上的工具中选择“交互式对象”并选择选择对象。
当您突出显示要修复的第一个字段时,您应该能够通过 control-a 选择所有交互式对象。全部选中后,右键单击一个字段并选择属性。
在“常规”选项卡中,底部选项应具有“通用属性”,其中“表单字段”选项将其更改为隐藏,然后返回可见。然后,这将恢复表单的所有可见性。
当我收到这个时,这对我来说在所有罕见的情况下都有效,并且没有让我失望过一次。希望对你也一样
鲍勃
我在这里尝试过的没有任何效果 - 除了更改软件。
我使用的是 PDFElement 6 Pro(试用版),但无法正常工作。使用 PDFBox 以及上面的所有建议尝试了各种事情。
最后尝试了https://www.pdfescape.com/一切都很好。
在我的情况下,我通过在属性中的“外观”选项卡中将字体更改为 Arial(或 Windows 集中的标准之一)来解决它。之前,它被设置为 Helvetica,它没有嵌入到文件中,我认为这会产生问题。