PdfBox中的Courier字体?

时间:2018-08-02 17:32:30

标签: java pdfbox

如何在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>

谢谢

1 个答案:

答案 0 :(得分: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将其设置为默认字体,表现得与Adobe相似。但我仍然建议您在代码中明确设置它。