Itext 5 wird bei generierten pdf-Dateien für Myanmar Unicode-Schriften nicht korrekt angezeigt.
Itext-Version : 5.5.13.1
Erwartetes Ergebnis : သီဟိုဠ်မှ ဉာဏ်ကြီးရှင်သညဇလွန်အာယုဝဎ္ဍနဆေးညွှန်းစးဗာကို ်ထက်ဈေးဘေ််ာဒံပင်ထကဂဃနဏဖတ်ခ အဓိဋ္ဌာန်လျက် ်ဲ့သည်။
Tatsächliches Ergebnis
Google Drive Link für generierte PDF.
Mein Test-String ist ähnlich wie Der schnelle braune Fuchs springt über den faulen Hund auf Englisch. Sie enthält die meisten Alphabete von Myanmar.
Java-Programm, das ich für das obige Produkt verwendet habe 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();
Die ausgegebenen Texte sind korrekt (Sie können sie kopieren und in ein Texteditor wie Notepad einfügen und das Ergebnis sehen), aber die PDF-Datei wird falsch angezeigt.
Was muss ich tun, um die Myanmar Unicode-Schriftart korrekt anzuzeigen, wenn ich itext-pdf-5 verwende ?
Jetzt verwende ich eine schmutzige Methode, um die Schriften lesbar zu machen. Ich habe alle Unicode-Zeichenketten in Zawgyi Font (Dies ist eine andere Myanmar-Schriftart und wir sollten diese niemals verwenden. Dies ist keine gute Lösung, und wir können nicht versprechen, dass alle Unicode-Zeichenketten korrekt in die Schriftart Zawgyi-One konvertiert werden, und ich möchte keine Unicode-Texte in Nicht-Standard-Texte konvertieren. Deshalb möchte ich diesen Weg nicht benutzen.