java - PdfBox 中的 Courier 字体?

标签 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>

谢谢

最佳答案

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

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。但我仍然建议在代码中明确设置它。

关于java - PdfBox 中的 Courier 字体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51659277/

相关文章:

java - 在哪里可以找到 wls-api.jar?

apache - pdfbox Font TrueType 导致 stripper.getText() 错误

java - Androidx RecycleView 不显示带有解析服务器的项目

java - 并行任务批处理的设计方法

java - 将 CDT 时间转换为我的本地时间

java - PDFBox 无法从 PDF 文件页面生成图像

java - PDFTextStripper 解析编码错误

java - setCompressionLevel(0) 但机智 PDFBox?

javascript - 使用 PDFBox 2.x 在 PDF 上放置一个按钮

java - Facebook 集成应用程序可以在模拟器中完美运行,但不能在 Android 设备上运行