PdfBox 中的 Courier 字体?
Courier Font in 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>
谢谢
您需要将字体添加到默认资源:
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。但我仍然建议在代码中明确设置它。
如何在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>
谢谢
您需要将字体添加到默认资源:
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。但我仍然建议在代码中明确设置它。