Pdfbox - 找不到PDType0Font.load

时间:2017-10-30 19:43:43

标签: java apache pdfbox

我一直试图解决这个问题。我的程序有最新的PDFBox(2.0.7)和FontBox(2.0.7),但无论我做什么,我都会遇到相同的编译错误。

在这个课程中,这是我的相关导入:

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDTrueTypeFont;
import org.apache.pdfbox.pdmodel.font.PDType0Font;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
import org.apache.pdfbox.pdmodel.common.PDRectangle;

我正在尝试使用以下示例设置字体:

PDDocument pdfDoc = new PDDocument();
PDPage page = new PDPage();
pdfDoc.addPage(page);

PDPageContentStream contents = new PDPageContentStream(pdfDoc, page);
PDFont font = PDType0Font.load(pdfDoc, new File("/path/to/font/Roboto-Regular.ttf"));
contents.setFont(font, 20);

不幸的是,正如我所说,每次都会出现以下编译错误:

 error: cannot find symbol
 PDFont font = PDType0Font.load(pdfDoc, new File("/path/to/font/Roboto-Regular.ttf"));
 symbol:   method load(PDDocument,File)
 location: class PDType0Font

我已多次查看Javadocs,我打开了JAR文件以确认该方法是否存在(它是),并且我尝试了其他一些事情,例如初始化" font"作为PDType0Font的实例而不是接口PDFont。同样的错误。我尝试导入网站为2.0.7提供的每一个JAR。 (预检,xmpbox,pdfbox-tools,pdfbox-debugger)我仍然得到同样的错误。我尝试从pdmodel和pdmodel.font包导入每个类。同样的错误。其他一切都很好 - 这只是一种特殊的方法。最初我使用PDTrueTypeFont而不是PDType0Font,它很好。但由于外来字符,我必须切换到PDType0Font。

编辑:解决了。事实证明,我的类路径中的过时Tika JAR正在创建冲突并将PDFBox恢复为版本1.8.13。

1 个答案:

答案 0 :(得分:1)

这个问题已经解决了。事实证明我的类路径中存在冲突。我有一个非常过时的Tika JAR,其中包含PDFBox 1.8,因此我将Tika更新为最新版本,不再有问题。感谢Tilman Hausherr建议解决方案。

  

可能是你的类路径中有一个旧的.jar文件吗?尝试添加Exception e = new COSVisitorException(new Exception());.如果那个有效,那么这意味着你的类路径中有一个1.8版本(你不应该!)

Pdfbox - Cannot find symbol for PDType0Font.load