Я пытаюсь создать 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
user630729 18 Июн 2020 в 18:38

1 ответ

Лучший ответ

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

0
Tilman Hausherr 18 Июн 2020 в 17:57