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

PDFBox/wordutils:填充PDF表单文本框中的奇怪字符

丁俊智
2023-03-14

我使用PDFBox填充PDF表单中的字段,方法是获取PDTextbox,然后调用'set value'。我还使用Wordutils.wrap(Apache Commons)手动包装文本,我发现某些字符组合,特别是括号,会导致PDF文本字段中输出奇怪的字符。例如:

Pt.说:“我转身时膝盖扭动了一下,我跌倒了,我感觉有什么东西在(膝盖)动。当我试图站起来时,我崩溃了,因为它太疼了。”

在文本字段中显示为

他说:“我在转弯时膝盖扭伤了,我摔倒了,我感觉有什么东西在我的tj0-13t里动了。”

而字符串:Testing(character)encoding(issue)(knee)my knee)

public static void setTextboxValue(PDAcroForm form, String fieldName, String value) throws Exception {
    String newValue = "";
    if (value != null)
        newValue = value;

    // Clean up CR / LF characters, replace with newlines.
    newValue = newValue.replace("\r", "");

    PDTextbox box = getTextbox(form, fieldName);
    if (box != null)
        box.setValue(newValue);
}

public static void setTextboxValue(PDAcroForm form, String fieldName, String value, int wrapLength) throws Exception {
    String newValue = "";
    if (value != null)
        newValue = value;

    setTextboxValue(form, fieldName, WordUtils.wrap(newValue, wrapLength, "\n", true));
}

在本例中,我调用了SetTextBoxValue(form,“FieldName”,Object.GetDescription(),100);我认为这是由于如何/在哪里调用Wordutils.wrap()引起的问题,但测试字符串无论如何都不应该换行,如果我从膝盖字符串中删除括号,它就会显示和换行。

有什么想法吗?!

共有1个答案

徐焱
2023-03-14

根据PDFBOX-276和PDFBOX-716,pdfbox有错误处理右括号的历史。我的理解是)字符被呈现为\。因为\是转义字符,所以在\作为控制字符后,单个字符或字符会发生各种疯狂的事情,当然不会被打印出来。这完全可以解释您的情况

所以这里有一些建议:

  1. 查看不同版本的PDFBox可能吗?我提到的错误是从2010年开始的,所以希望他们现在已经解决了这个问题。PDFBOX-276在当时的代码中添加了一个补丁。我相信PDFBOX-716是用来删除PDFBOX-276修补程序的修补程序。
  2. 由于您将输出为PDF格式,请尝试转义所有出现的右括号,看看这是否有帮助。

长话短说,这是PDFBox的一个错误,希望他们现在已经修复了。

 类似资料:
  • 当我使用这个长字段名时,我没有得到任何错误,但是得到的PDF不包含我放在字段中的值。我想可能字段名有问题,所以我使用了Pdftk工具,它只给出了作为字段名。但是当我仅仅使用它时,我会得到error。救命?

  • 我可以用以下代码填充文本框注释,但文本不会出现在某些阅读器中,比如Adobe Acrobat,尽管它确实出现在Chrome和其他基于Webkit的浏览器中。我试图填写的PDF文件不使用AcroForms或FDF。我使用的是ApachePDFBox,但我认为PDF库中没有太大差异,即使是跨语言/平台。 我尝试过将我的PDF输出与填充Chrome的文档进行比较,但我看到的唯一区别是默认外观(DA)属性

  • 您是否设法在横向模式下填充PDF文档? 谢谢你的帮助。

  • 我在用ApachePDFBox填写PDF表格。我使用的是TrueType字体(不是默认字体),叫做“Impact”,非常标准。在模板中,我有一个名为“Title”的字段,指定了影响字体。我使用下面的代码获取该模板,并用一个包含多个单词的值填充该字段。 问题是,当你查看创建的PDF时,单词之间有很大的空格。如果在Acrobat中打开PDF并单击该字段,文本将发生变化,大间距将消失。以任何方式编辑该字

  • 字体Adobe希伯来文 文本方向RTL 我试过平场和不平场。 当字段没有平坦化时,在使用Acrobat Reader打开生成的PDF后,我看到了我的字段,但它是空的。只有在我点击该字段后,该字段的内容才会正确出现。当我在Chrome上查看PDF时,字段不会出现(或者它可能在那里,但里面没有文本)。 编辑:测试PDF可从这里下载

  • 我目前正在使用FPDI在静态pdf文档上打印数字。当我尝试对带有可填充表单的pdf执行相同操作时,FPDI会抛出一个错误: “此文档([pdf path])可能使用了FPDI附带的免费解析器不支持的压缩技术。” 阅读文档FPDI显然无法做到这一点。搜索替代项并没有让我走那么远(我通常会找到预先填充表单字段的方法……但我需要在表单区域之外打印一个数字) 是否有人知道这方面的解决方案(例如替代LIB)