PDFBox: Как установить запасной шрифт для написания текста - PullRequest
0 голосов
/ 04 мая 2018

Я создаю PDF на основе пользовательского ввода, и пользователь может вводить английский или китайский текст, используя следующий код

contentStream.beginText();
contentStream.setFont(font, fontSize);
contentStream.newLineAtOffset(startX, startY);
contentStream.showText(text);
contentStream.endText();

Я получаю ошибку

java.lang.IllegalArgumentException: No glyph for U+7B11 in font OpenSans-Regular

at org.apache.pdfbox.pdmodel.font.PDCIDFontType2.encode(PDCIDFontType2.java:363)
at org.apache.pdfbox.pdmodel.font.PDType0Font.encode(PDType0Font.java:398)
at org.apache.pdfbox.pdmodel.font.PDFont.encode(PDFont.java:323)
at org.apache.pdfbox.pdmodel.PDPageContentStream.showTextInternal(PDPageContentStream.java:508)
at org.apache.pdfbox.pdmodel.PDPageContentStream.showText(PDPageContentStream.java:471)

Шрифт - это OpenSans-Regular. Этот шрифт не содержит Glyph для 笑解千

Как добавить резервный шрифт в PDFBox, чтобы, если он не находит глиф в одном шрифте, можно было использовать другой?

версия: pdfbox-2.0.9

Добавление шрифта, как показано ниже

PDFont openSansRegular = PDType0Font.load(document, MyLayout.class.getResourceAsStream(OPENSANS_REGULAR_PATH));
...