使用特定字体大小设置PDFFormField的值

时间:2014-05-06 17:54:21

标签: pdfbox

我有一个非常简单的用例来填充一个acroform。我有一个非多行文本字段。我想调整字体大小以适应文本字段的宽度。

PDF规范提到字体大小为0意味着自动适应宽度。但是PDFBox - 1419& PDFBOX-1402提到pdfbox不支持此功能。

因此我有一些小的逻辑来根据宽度等计算字体大小。但是我在设置字体大小时遇到​​了问题。

我看到了PDFBox - 1419中提到的行为。

  

以不正确的字体大小开始。如果我单击该字段,它将正确显示。在字段外单击,它将恢复为错误的显示。

代码:

pdfFormField.getDictionary.setString(COSName.DA, "/Helv 10 Tf 0 g”)
pdfFormField.setValue("Hello")

非常感谢任何指针或帮助。

此类PDF is here

的简单示例

1 个答案:

答案 0 :(得分:1)

Pdfbox表单字段类在其生命周期的早期将默认外观读入成员变量,而不是跟踪它们所基于的表单字段字典中的更改。因此,在pdfFormField.setValue("Hello")期间创建外观流时,会使用前 DA 值。

因此,设置默认外观后,必须重新实例化表单字段对象。然后使用此新对象设置字段值。

有关示例代码,请查看this answer to How to set the text of a PDTextbox to a color?;此处,在设置字段值之前,文本字段的现有 DA 值将更改为包含颜色设置操作。