PDFBox со шрифтом ttf - без отображения Unicode - PullRequest
1 голос
/ 18 июня 2020

Я пытаюсь создать PDF-документ с помощью Apache PDFBox 2.0.18, а затем распечатать его.

Все работает нормально, но при печати я получаю много предупреждений:

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();

Я пробовал поискать в Google эту ошибку, но все, что я могу найти, - это люди, пытающиеся извлечь текст из существующего документа. Я делаю не это, я пытаюсь создать документ и распечатать его.

Что я делаю не так?

Спасибо.

1 Ответ

0 голосов
/ 18 июня 2020

Вы должны сохранить созданный вами файл перед его печатью и перезагрузить его для печати. Проблема здесь в том, что при сохранении выполняется подмножество шрифтов.

...