как справиться с записью в pdf файл китайских символов - PullRequest
1 голос
/ 28 марта 2012

Я пытаюсь получить текст из файла свойств, который он закодирован в utf-8, и записать его в файл PDF, используя объект документа в Java.

Document document = new Document();
File file = new File(FILES_PATH + ".pdf");
FileOutputStream fos = new FileOutputStream(file);
PdfWriter.getInstance(document, fos);
.
.
.
pdfTable table;
document.add(table);
document.close();

, когда я получаю только значение изсвойство игнорирует китайские иероглифы.когда я пытаюсь закодировать строку вместо китайских символов, я получаю странные слова или "?".

пытался закодировать ее в utf-8, iso-8859-1, gbk или gb3212.

нужна помощь, чтобы файл PDF смог получить китайские иероглифы

1 Ответ

0 голосов
/ 24 сентября 2013

Это не будет работать таким образом.

Чтобы отобразить символ Unicode в PDF, который отсутствует во встроенных шрифтах PDF, необходимо указать собственный шрифт для текстового фрагмента и создать отдельный фрагмент.для каждого фрагмента текста, который покрыт данным шрифтом.Вам также необходимо встроить использованные шрифты в PDF-документ (поэтому, пожалуйста, учтите, если лицензия на используемые вами шрифты позволяет распространять их).

Таким образом, каждая строка может отображаться с использованием множества шрифтов.Но iText имеет класс FontSelector, который выполняет эту задачу:

FontSelector selector = new FontSelector();

BaseFont bf1 = BaseFont.createFont(fontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
bf1.setSubset(true);
Font font1 = new Font(baseFont, 12, Font.BOLD);
selector.addFont(font1);
// ... do that with all fonts you need

Phrase ph = selector.process(TEXT);
document.add(new Paragraph(ph));

Более сложный пример вы можете найти в моей статье: Использование динамических шрифтов для международных текстов в iText

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...