首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PDFbox,字体异常

PDFbox,字体异常
EN

Stack Overflow用户
提问于 2013-11-13 00:00:24
回答 2查看 2.4K关注 0票数 1

我已经写了一个简单的代码来编辑一个pdf格式的表单内容。一切都很好(新的pdf是用修改过的表单创建的),但却抛出了一个关于字体的奇怪的问题。这是我的代码:

代码语言:javascript
复制
try {
        PDDocument pdfDoc = PDDocument.load("/home/giozh/universita/schedepazienti.pdf");
        PDDocumentCatalog docCatalog = pdfDoc.getDocumentCatalog();
        PDAcroForm acroForm = docCatalog.getAcroForm();

        PDField field = acroForm.getField("dx1");
        if (field != null) {
            field.setValue("asd");
        } else {
            System.err.println("No field found with name:" + "applicationPrepaid[0].#pageSet[0].Pagina1[0].txtFirstName[0]");
        }
        pdfDoc.save("/home/giozh/universita/schedepazienti1.pdf");
        pdfDoc.close();
    } catch (IOException ex) {
        Logger.getLogger(Prove.class.getName()).log(Level.SEVERE, null, ex);
    } catch (COSVisitorException ex) {
        Logger.getLogger(Prove.class.getName()).log(Level.SEVERE, null, ex);
    }

这是一个例外:

代码语言:javascript
复制
Grave: error while creating a font
java.io.IOException: Cannot create font as /SubType is not set.
at org.apache.pdfbox.pdmodel.font.PDFontFactory.createFont(PDFontFactory.java:88)
at org.apache.pdfbox.pdmodel.PDResources.getFonts(PDResources.java:203)
at org.apache.pdfbox.pdmodel.interactive.form.PDAppearance.getFontAndUpdateResources(PDAppearance.java:439)
at org.apache.pdfbox.pdmodel.interactive.form.PDAppearance.setAppearanceValue(PDAppearance.java:268)
at org.apache.pdfbox.pdmodel.interactive.form.PDVariableText.setValue(PDVariableText.java:131)
at prove.Prove.main(Prove.java:37)

(第37行是我调用setValue()方法的地方)如何修复它?

EN

回答 2

Stack Overflow用户

发布于 2013-11-13 05:47:14

本质上

您的PDF有一个错误,它被正常地忽略(只是一些日志记录输出)。

详细信息

PDF中的AcroForm字典如下所示:

代码语言:javascript
复制
4 0 obj
<<
  /Fields [ 12 0 R ]
  /DA(/Helvetica 0 Tf 0 g )
  /DR
  <<
    /Font
    <<
      /Helvetica 11 0 R
      /Encoding<</PDFDocEncoding 10 0 R>>
    >>
  >>
  /NeedAppearances true
>>
endobj

其中的Helvetica字体字典包含字体的一个条目(该字体是相关字段中使用的字体,请参阅其DA值/Helvetica 0 Tf 0.000000 0.000000 0.000000 rg),以及其值根本不代表字体的编码的条目。

PDFBox试图解析名为Encoding的“字体”,但失败了。但PDResources.getFonts()只记录产生的异常,并继续忽略此问题:

代码语言:javascript
复制
try
{
    newFont = PDFontFactory.createFont( (COSDictionary)font );
}
catch (IOException exception)
{
    LOG.error("error while creating a font", exception);
}

(pdfbx-1.8.2.jar,org.apache.pdfbox.pdmodel.PDResources)

因此,您会看到以"error while creating a font“为首的异常(因为它显式地记录在日志中),但结果是正确创建的(因为异常基本上被忽略了)。

票数 1
EN

Stack Overflow用户

发布于 2016-12-05 20:25:33

我只是想补充一下,我在Helvetica字体上遇到了类似的问题,这是一种标准字体,它被证明是表单文本区域的大小。表单会填满,但当它平整时,字段就会消失。我认为这是一个问题的组合(包装,溢出等),但日志中唯一的错误是关于字体的。该表单是使用adobe创建的,并填充了PDFbox

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19933931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档