Кодировка UTF-8 с помощью ByteArrayOutputStream - PullRequest
0 голосов
/ 28 марта 2019

У меня проблемы с кодировкой символов для не английских символов. Здесь я использую библиотеку itext для создания PDF.

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
Document document = new Document();
document.setMargins(-50.0f, -50.0f, 15.0f, 0.0f);
PdfWriter.getInstance(document, byteArrayOutputStream);
document.open();

-----

myObj.setByteArrayInputStream(new byteArrayInputStream(byteArrayOutputStream.toByteArray()));

Я пытался с помощью следующего кода

myObj.setByteArrayInputStream(new ByteArrayInputStream(byteArrayOutputStream.toString("UTF-8").getBytes()));

1 Ответ

1 голос
/ 28 марта 2019

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

Скорее всего, проблема в вашем коде гораздо большеПринципиально, что просто кодирование конечного выходного потока.Было правильно указано, что PDF является двоичным форматом.Поэтому не пытайтесь вводить какую-либо кодировку в выходной поток.

Вместо этого взгляните на примеры шрифтов iText, например, https://itextpdf.com/en/resources/examples/itext-7/itext-7-building-blocks-chapter-1-examples-pdffont и, в частности, на примеры, касающиеся иностранного текста и использованияPdfEncodings.IDENTITY_H.

Если проблема не устранена, добавьте соответствующий код к своему вопросу, в частности код, который устанавливает шрифт и добавляет текст на страницу PDF.

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