Itext 5 некорректно отображается в сгенерированном pdf файле для шрифтов Юникод Мьянмы.
Текстовая версия : 5.5.13.1
Результат ожидания : သီဟိုဠ်မှ ဉာဏ်ကြီးရှင်သည်အာယုဝဎ္ဍနဆေးညွှန်းစာကို ဇလွန်ဈေးဘေးဗာဒံပင်ထက် အဓိဋ်လျက် ဂဃနဏဖတ်ခာန့သည်။
Фактический результат
Ссылка на диск Google для сгенерированного PDF-файла.
Моя тестовая строка похожа на Быстрый коричневый лис перепрыгивает через ленивую собаку на английском языке. Она содержит большинство алфавитов Мьянмы.
Java программа, которую я использовал для продукта выше pdf
String fileName = sample.pdf;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
Document doc = new Document();
PdfWriter writer = PdfWriter.getInstance(doc, baos);
writer.setCloseStream(false);
BaseFont unicode = BaseFont.createFont(/fonts/NotoSansMyanmar-Regular.ttf, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
Font myanmarUniCodeFont = new Font(unicode, 11, Font.NORMAL, BaseColor.BLACK);
Rectangle pageSize = new Rectangle(PageSize.A4);
doc.setPageSize(pageSize);
doc.open();
String textStr = သီဟိုဠ်မှ ဉာဏ်ကြီးရှင်သည်အာယုဝဎ္ဍနဆေးညွှန်းစာကို ဇလွန်ဈေးဘေးဗာဒံပင်ထက် အဓိဋ္ဌာန်လျက် ဂဃနဏဖတ်ခဲ့သည်။;
doc.add(new Paragraph(textStr, myanmarUniCodeFont));
doc.close();
}
catch (Exception e) {
e.printStackTrace();
}
response.setCharacterEncoding(StandardCharsets.UTF_8.name());
response.setHeader(Cache-Control, no-cache,no-store,max-age=0);
response.setHeader(Pragma, No-cache);
response.setHeader(Content-Disposition, inline; filename= + fileName);
response.setContentType(application/pdf);
response.setContentLength(baos.size());
OutputStream os = response.getOutputStream();
baos.writeTo(os);
os.flush();
os.close();
baos.close();
Ouput-тексты корректны (вы можете скопировать и вставить их в текстовые редакторы, такие как Блокнот, и увидеть результат), но неправильно отображаются в pdf-файле.
Что нужно сделать, чтобы правильно отобразить шрифт Юникод Мьянмы с помощью itext-pdf-5 ?
Теперь я использую грязный способ, чтобы увидеть шрифты читаемыми. Я преобразовал все строки юникода в Zawgyi Font (Это еще один шрифт Мьянмы, и мы никогда не должны его использовать) и вставил его в pdf. Это плохое решение, и мы не можем обещать, что все юникоды будут корректно конвертированы в строку шрифта Zawgyi-One, и я не хочу конвертировать тексты в юникод в нестандартные тексты. Вот почему я не хочу использовать этот способ.