如果在 PDF 表单中多次出现,Java PDFBox 不会保持字段的字体外观

Posted

技术标签:

【中文标题】如果在 PDF 表单中多次出现,Java PDFBox 不会保持字段的字体外观【英文标题】:Java PDFBox does not maintain the font appearence of a field if it appears severraly in a PDF Form 【发布时间】:2017-06-21 15:53:56 【问题描述】:

我需要从我的 java Web 应用程序动态填写 pdf 表单,我发现 PDFBox 非常有用,除了当我有多个同名字段时面临的问题或挑战。

我在一页 pdf 表单的不同位置有 5 个同名字段(比如说“wcode”)。此字段有不同的字体。通常,当您手动填写一个字段时,其他字段会自动选择相同的值,当我使用 PDFbox 填写它时会发生同样的情况,除了 PDFBox 将我的所有 5 个字段更改为与出现在 pdf 表单中的第一个字段具有相同的字体。

这是用于填写该字段的代码。

PDDocument _pdfDocument = PDDocument.load(new File(originalPdf))
PDAcroForm acroForm = _pdfDocument.getDocumentCatalog().getAcroForm();    
PDTextField myCodeField = (PDTextField) acroForm.getField("wcode");
       if (myCodeField != null) 
          myCodeField .setValue(my.getCode());
       
//Refresh layout && Flatten the document                
       acroForm.refreshAppearances();
       acroForm.flatten();
 _pdfDocument.save(outputFile);

我加了

acroForm.refreshAppearances();

经过一些研究,但这并没有改变任何东西。

因此,如果出现在 pdf 表单上的第一个“wcode”字段是 6pt,那么其余的所有其他“wcode”字段都是 6pt,即使我在外观属性中将它们设置为 12pt。

我正在使用 PDFBox 2.0.5

【问题讨论】:

请删除此问题并在 JIRA 中打开一个问题。不要忘记附上您的 PDF。 正如@TilmanHausherr 所建议的,我为相同的issues.apache.org/jira/browse/PDFBOX-3837创建了一个jira 【参考方案1】:

这个问题已经在大约一个月前发布的 PDFBox 2.0.6 版本中得到解决。 Check comment on the jira 3837 here

【讨论】:

以上是关于如果在 PDF 表单中多次出现,Java PDFBox 不会保持字段的字体外观的主要内容,如果未能解决你的问题,请参考以下文章

Java 列表项在页面重新加载时重新添加到 thymeleaf 下拉列表中,多次出现

PDF表单中插入JAVA判断语句

java中将表单转换为PDF

Java 创建填充PDF表单域

Java 创建填充PDF表单域

Java创建填充pdf表单域