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

使用PDFBox克隆具有所有样式的表单字段

荣波
2023-03-14

我们需要为我们的客户填写一个表格,并获得一个PDF,他们可以打印,签名

但我很难确定页码。由于表单由多个模板组合而成,我必须用PDFBox修复页码。到目前为止,我们在每页上都使用了一个样式化的输入字段page_num。但由于它们都有相同的名字,我不能单独填写。

我可以以某种方式拆分或克隆字段并为它们提供单独的名称,以便我可以单独填充它们吗?当然,样式应该保持不变。

共有1个答案

卓嘉良
2023-03-14

在PDFBox人员的帮助下,我已经让它工作了。我的解决方案是使用JRuby,但我认为您可以很容易地将其转换为Java(删除Java::OrgApachePdfbox...命名空间)。

doc = Java::OrgApachePdfboxPdmodel::PDDocument.load("input.pdf")

form = doc.getDocumentCatalog.getAcroForm
pages = doc.getDocumentCatalog.getAllPages.toArray.to_a
page_num = form.getField("page_num")
string = page_num.getDictionary
  .getDictionaryObject(Java::OrgApachePdfboxCos::COSName::DA)

page_num.getKids.to_array.each do |widget|
  widget_dict = widget.getDictionary
  widget_dict.setString(Java::OrgApachePdfboxCos::COSName::DA, string.getString)
  field = Java::OrgApachePdfboxPdmodelInteractiveForm::PDTextbox.new(
    form,
    widget_dict
  )

  field.setParent(page_num)

  page = (pages.index(widget.getPage) + 1).to_s
  field.setPartialName("page_num_#{page}")
  field.setValue(page)
end

doc.save("output.pdf")
 类似资料:
  • 我有一个对象,其中包含几个列表。有没有一种方法来克隆这个对象,没有id使用mapstruct,即使是嵌套的对象列表,以自动的方式能够持久化它。 实际制图员 有没有一种方法可以忽略所有id,而不必对每个列表进行@Mapping(target=“id”,ignore=true)?

  • 我已经复制了这个代码,似乎是各种工作dockerfile周围,这里是我的: 这给了我错误 这是我第一次使用dockerfile,但是从我所读到的(以及从工作配置中获取的),我不明白为什么这不起作用。 我的id_rsa和我的dockerfile在同一个文件夹中,是我的本地密钥的副本,可以克隆这个回购没有问题。 编辑: 在我的dockerfile中,我可以添加: 它打印出正确的密钥,所以我知道它被正确

  • 问题内容: 有没有一种干净的方法来克隆SQL中具有索引(自动增量)的记录。我想克隆除索引外的所有字段。我目前必须枚举每个字段,并在插入选择中使用它,而我宁愿不明确列出所有字段,因为它们可能随时间而变化。 问题答案: 除非您想进入动态SQL,否则不可以。既然您写的是“干净”,我就不做。 编辑: 由于他要求一个动态的SQL示例,我将对此进行介绍。我目前尚未连接到任何数据库,因此这是我的首要任务,几乎可

  • 对于我的项目,我需要一种类型的字典,在那里我可以按键访问值列表,但也可以按值获取键。为了实现这一点,我创建了一个包含两个HashMaps的新类: 我也想能够克隆这种地图。我目前的解决方案是 是否有一种更节省时间的方法来执行此复制:减少时间复杂度,而不是内存复杂度。谢了! 编辑:我需要的是,改变初始地图的列表不会改变复制地图的列表,反之亦然。我希望实际元素引用相同的实例。

  • 问题内容: 是否可以通过单击“禁用/启用CSS”按钮来检测当前页面上的所有样式表,并在第一次单击时将其禁用,从而不应用任何样式,然后在第二次单击时再次将其还原?如果有可能,jQuery会是什么样子? 问题答案: 这应该禁用所有这些,然后启用它们的相反: