pdfbox2.0.4 将带中文的pdf转png

pdfbox2.0.4 convert pdf with Chinese to png

我导入了 pdfbox-2.0.4.jarfontbox-2.0.4.jarcommons-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();
        }

    }
}

如评论中所示 - 最好的解决方案是安装缺少的字体 KaiTi_GB2312。消息 Using fallback font 意味着 PDF 引用了提到的字体但没有嵌入它,但在您的计算机上找不到它,因此 PDFBox 尝试了后备解决方案,在本例中为 ArialUnicodeMS 字体。遗憾的是,此类后备解决方案并不总是完美的,这就是渲染图像中缺少某些字形的原因。