当前位置: 首页 > 知识库问答 >
问题:

用PDFBOX设置的表单字段值在Adobe Reader中不可见

蒋奇
2023-03-14
PDDocumentCatalog docCatalog = pdfDocument.getDocumentCatalog();
pdfTemplate.setAllSecurityToBeRemoved(true);
PDAcroForm acroForm = docCatalog.getAcroForm();
List fields = acroForm.getFields();     
Iterator fieldsIter = fields.iterator();        
while( fieldsIter.hasNext())
{
    PDField field = (PDField)fieldsIter.next();         
    if(field instanceof PDTextbox){
        ((PDTextbox)field).setValue("STATIC PDFBOX EDIT");
    }
}
  • PDF版本:1.6(Acrobat 7.x)
  • PDF版本:1.7(Acrobat 8.x)

这个很好用。我可以在Adobe Reader XI中打开文档,并在表单中看到正确的值。

对于以下的静态PDF:

    null

共有1个答案

萧繁
2023-03-14

PDF的主要区别在于所使用的表单技术:

  • test_9.pdf使用了良好的OL'形式的AcroForm窗体;
  • test_10.pdftest_10.pdf则使用包含AcroForm表示形式和XFA(Adobe XML Forms Architecture)表示形式的混合表单。

知道XFA的PDF查看器(即最重要的Adobe Reader和Adobe Acrobat)使用文件中的XFA信息,而不知道XFA的查看器(即大多数其他查看器)使用AcroForm信息。

acroForm.setXFA(null);

如果没有XFA,Adobe Reader也将使用AcroForm表单信息。

编辑AcroForm和XFA信息。您可以使用以下方法检索XFA信息

PDXFAResource xr = acroForm.getXFA();

并使用

xr.getDocument()
 类似资料:
  • 如何为PDF表单中的每个字段设置定义值,假设我的PDF表单中有5个字段,例如2个文本框(名字和姓氏)和2个复选框(Check_1,Check_2),2个单选按钮(男,女),然后最后我有另一个文本框(地址),现在我必须定义或设置每个字段的值,比如1代表名字,2代表姓氏,3代表Check_1并继续到7代表地址。下面是一段代码来定义每个字段的值,但我面临一些问题,当设置单选按钮字段的值时,当涉及男和女字

  • 问题内容: 有没有一种简单的方法可以为文本表单字段设置默认值? 问题答案: 可以在创建过程中轻松使用:

  • Django 1.6 我在Django表单类中有一个工作代码块,如下所示。我用来构建表单字段列表的数据集可以包含任何字段的初始值,而我在表单中设置该初始值时没有成功。块,下面的块确实填充了初始表单字典属性,但未显示初始值。请注意(如果您想知道) 属性在 调用之前不存在。 这能做到吗? 如果是这样的话,我在做什么不正确的事情? 谢啦!

  • 问题内容: 我有一个带有两个表的SQL Server 2008数据库。第一个表称为Department。第二个表称为票证。这两个表的定义如下: 我正在尝试找出一种动态更新Department.TotalTickets值的方法。当添加或删除工单时,我想自动增加或减少TotalTickets的值。有人可以告诉我在SQL Server 2008上执行此操作的最佳方法吗? 谢谢 问题答案: 有多种方法可以

  • 如何使用pdfbox获取PDF表单中存在的字段类型。我的意思是,如果单选按钮和检查按钮出现在PDF表单中,它应该返回我单选按钮或检查按钮,但使用getFieldType()方法,我只能为文本框返回“txt”,而对于单选/检查框,它返回-“btn”。 但我需要区别的按钮是,无论是收音机或复选框或它的一个按钮,可以帮助我的任何一个请谢谢

  • 在install4j中,我使用一个带有文本字段的可配置表单来输入许可密钥。用户可以用Ctrl+V组合键在里面粘贴文字,但是右键点击在里面就没有菜单了。 是否有一个选项可以在文本字段中启用右键?(以不知道组合键的用户为例) 谢谢