我一直试图解决这个问题。我的程序有最新的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。答案 0 :(得分:1)
这个问题已经解决了。事实证明我的类路径中存在冲突。我有一个非常过时的Tika JAR,其中包含PDFBox 1.8,因此我将Tika更新为最新版本,不再有问题。感谢Tilman Hausherr建议解决方案。
可能是你的类路径中有一个旧的.jar文件吗?尝试添加Exception e = new COSVisitorException(new Exception());.如果那个有效,那么这意味着你的类路径中有一个1.8版本(你不应该!)