Itext 5 não são exibidos corretamente no arquivo pdf gerado para fontes Myanmar Unicode.
Versão Itext : 5.5.13.1
Resultado da Expectativa : သီဟိုဠ်မှ ဉာဏ်ကြီးရှင်သည်အာယုဝဎ္ဍနဆေးညွှန်းစးဗာကို ဇလွန်ဈေးဘေ်ာဒံပင်ထက် အဓိဋ္ဌာန်လျကဂဃနဏဖတ်ခ ်ဲ့သည််။
Resultado real
Google Drive Link para PDF gerado.
Meu teste é similar com The quick brown fox jump over the lazy dog em inglês. Ele contém a maioria dos alfabetos de Myanmar.
Programa Java que eu usava para produto acima do 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();
Os textos douput estão corretos (você pode copiar e colar em um editor de texto como o Bloco de Notas e ver o resultado), mas a exibição em arquivo pdf está errada.
O que devo fazer para exibir corretamente a fonte Myanmar Unicode usando itext-pdf-5 ?
Agora estou a usar uma maneira suja de ver as fontes legíveis. Converti todas as cordas unicode para Zawgyi Font (Esta é outra fonte de Myanmar e nunca devemos usá-la.) e incorporei-a no pdf. Esta não é uma boa solução e não podemos prometer que todos os unicodes são convertidos corretamente para Zawgyi-One e eu não quero converter textos unicode para textos não-padrão. É por isso que eu não quero usar desta maneira.