【问题标题】:Courier Font in PdfBox?PdfBox中的Courier字体?
【发布时间】:2019-01-10 13:25:21
【问题描述】:

如何在 PdfBox 中使用 Courier 字体?

我尝试使用 ((PDVariableText)field).setDefaultAppearance("/Cour 12 Tf 0 0 0 rg");

它抛出这个异常:

java.io.IOException: Could not find font: /Cour
    at org.apache.pdfbox.pdmodel.interactive.form.PDDefaultAppearanceString.processSetFont(PDDefaultAppearanceString.java:179)
    at org.apache.pdfbox.pdmodel.interactive.form.PDDefaultAppearanceString.processOperator(PDDefaultAppearanceString.java:132)
    at org.apache.pdfbox.pdmodel.interactive.form.PDDefaultAppearanceString.processAppearanceStringOperators(PDDefaultAppearanceString.java:108)

但是,这很好用:

((PDVariableText)field).setDefaultAppearance("/Helv 12 Tf 0 0 0 rg");

这是我的 Maven 依赖项:

<dependency>
   <groupId>org.apache.pdfbox</groupId>
   <artifactId>pdfbox</artifactId>
   <version>2.0.11</version>
</dependency>

谢谢

【问题讨论】:

    标签: java pdfbox


    【解决方案1】:

    您需要将字体添加到默认资源中:

    PDFont font = PDType1Font.COURIER;
    PDResources resources = new PDResources();
    resources.put(COSName.getPDFName("Cour"), font);
    PDAcroForm acroForm = new PDAcroForm(document);
    document.getDocumentCatalog().setAcroForm(acroForm);
    acroForm.setDefaultResources(resources);
    

    (如果 acroform 已经存在,或者默认资源已经存在,则需要进行调整。这取自源代码下载中的CreateSimpleForm.java 示例)

    “Helv”字体不会引发异常,因为 PDFBox 将其设置为默认值,以表现得像 Adob​​e。但我仍然建议在代码中明确设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多