我已导入 pdfbox-2.0.4.jar , fontbox-2.0.4.jar 和 commons-logging-1.1.1.jar 进入eclipse kepler。该程序在win10上运行。 控制台打印了很多这样的警告
org.apache.pdfbox.pdmodel.font.PDCIDFontType2 <init>
WARNING: Using fallback font ArialUnicodeMS for CID-keyed TrueType font KaiTi_GB2312.
我无法访问包含全部内容的图像文件。我该如何解决? 我的代码是这样的:
public class PdfboxTest {
private static final String filePath = "xxx";
private static final String outputFilePath = "xxx";
public static void change(File inputFile, File outputFolder) throws IOException {
String totalFileName = inputFile.getName();
String fileName = totalFileName.substring(0,totalFileName.lastIndexOf("."));
PDDocument doc = null;
try {
doc = PDDocument.load(inputFile);
PDFRenderer pdfRenderer = new PDFRenderer(doc);
int pageCounter = 0;
for(PDPage page : doc.getPages())
{
BufferedImage bim = pdfRenderer.renderImageWithDPI(pageCounter, 300, ImageType.RGB);
ImageIOUtil.writeImage(bim, outputFilePath + "\\" + fileName + (pageCounter++) +".png", 300);
}
doc.close();
} finally {
if (doc != null) {
doc.close();
}
}
}
public static void main(String[] args) {
File inputFile = new File(filePath);
File outputFolder = new File(outputFilePath);
if(!outputFolder.exists()){
outputFolder.mkdirs();
}
try {
change(inputFile, outputFolder);
} catch (IOException e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:0)
如评论中所示 - 最佳解决方案是安装缺少的字体KaiTi_GB2312
。消息Using fallback font
表示PDF引用了上述字体并且没有嵌入它,但无法在您的计算机上找到它,因此PDFBox尝试了后备解决方案,在本例中为{{1字体。遗憾的是,这种后备解决方案并不总是完美的,这就是渲染图像中缺少某些字形的原因。