带有 ttf 字体的 PDFBox - 没有 Unicode 映射

PDFBox with ttf font - No Unicode mapping

我正在尝试使用 Apache PDFBox 2.0.18 创建 PDF 文档,然后进行打印。

一切正常,但在打印时我收到很多警告事件:

Jun 18, 2020 5:24:05 PM org.apache.pdfbox.pdmodel.font.PDType0Font toUnicode
WARNING: No Unicode mapping for CID+73 (73) in font ArialMT
Jun 18, 2020 5:24:05 PM org.apache.pdfbox.pdmodel.font.PDCIDFontType2 codeToGID
WARNING: Failed to find a character mapping for 73 in ArialMT
Jun 18, 2020 5:24:05 PM org.apache.pdfbox.pdmodel.font.PDType0Font toUnicode
WARNING: No Unicode mapping for CID+82 (82) in font ArialMT
[...]

这是重现问题的代码:

    PDDocument doc = new PDDocument();

    String fontPath = "C:\Windows\Fonts\arial.ttf";
    PDFont font = PDType0Font.load(doc, new File(fontPath));

    PDPage page = new PDPage(PDRectangle.A4);
    doc.addPage(page);
    PDPageContentStream contentStream = new PDPageContentStream(doc, page);
    contentStream.setFont(font, 8f);
    contentStream.beginText();
    contentStream.newLineAtOffset(75f, page.getMediaBox().getHeight() - 25f);
    contentStream.showText("foo");
    contentStream.endText();
    contentStream.close();    

    PrinterJob job = PrinterJob.getPrinterJob();
    job.setPageable(new PDFPageable(doc));
    job.print();

我尝试用谷歌搜索这个错误,但我所能找到的只是人们试图从现有文档中提取文本。这不是我正在做的,我正在尝试创建一个文档并打印它。

我做错了什么?

谢谢。

您应该在打印之前保存您创建的文件,然后重新加载它以进行打印。问题出在这里是因为保存时字体子集已经完成了。