Использование PDFBox для записи кодированных строк UTF-8 в PDF файл

У меня возникли проблемы с написанием символов Юникода в PDF с помощью PDFBox. Вот пример кода, который генерирует символы мусора вместо вывода "š". Что я могу добавить, чтобы получить поддержку строк UTF-8?

PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);
PDPageContentStream contentStream = new PDPageContentStream(document, page);

PDType1Font font = PDType1Font.HELVETICA;
contentStream.setFont(font, 12);
contentStream.beginText();
contentStream.moveTextPositionByAmount(100, 400);
contentStream.drawString("š");
contentStream.endText();
contentStream.close();
document.save("test.pdf");
document.close();

Ответ 1

Вы используете один из встроенных шрифтов Base 14, которые поставляются с Adobe Reader. Эти шрифты не являются Unicode; они являются фактически стандартным латинским алфавитом, хотя с несколькими дополнительными символами. Похоже, что персонаж, о котором вы упоминаете, в нижнем регистре с кароном (š), недоступен в латинском тексте PDF... хотя в верхнем регистре Š имеется, но любопытно только в Windows. Дополнительную информацию см. В приложении D спецификации PDF http://www.adobe.com/devnet/pdf/pdf_reference.html.

В любом случае, дойдя до сути... вам нужно встроить шрифт Unicode, если вы хотите использовать символы Unicode. Убедитесь, что у вас есть лицензия на включение любого шрифта, который вы решите... Я могу порекомендовать open-source Gentium или Doulos, поскольку они являются бесплатными, высококачественными и имеют всестороннюю поддержку Unicode.