带有 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();
我尝试用谷歌搜索这个错误,但我所能找到的只是人们试图从现有文档中提取文本。这不是我正在做的,我正在尝试创建一个文档并打印它。
我做错了什么?
谢谢。
您应该在打印之前保存您创建的文件,然后重新加载它以进行打印。问题出在这里是因为保存时字体子集已经完成了。
我正在尝试使用 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();
我尝试用谷歌搜索这个错误,但我所能找到的只是人们试图从现有文档中提取文本。这不是我正在做的,我正在尝试创建一个文档并打印它。
我做错了什么?
谢谢。
您应该在打印之前保存您创建的文件,然后重新加载它以进行打印。问题出在这里是因为保存时字体子集已经完成了。