2017-11-18 247 views
2

我正在使用i-text從我的android應用程序中生成pdf。但它對英文字體運行良好。當我嘗試爲我的語言環境生成pdf時,我遇到了一些問題。一些博客得到一些技巧後,我已經得到的方式實現波紋管提到:使用itext爲Bangla文本在Android中的一代

String fontName = "Nikosh.ttf"; 
    InputStream is = context.getAssets().open(fontName); 
    int size = is.available(); 
    byte[] buffer = new byte[size]; 
    int a = is.read(buffer); 
    BaseFont customFont = BaseFont.createFont(fontName, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, true, buffer, buffer); 
    Font banglaFont = new Font(customFont, 12); 

現在輸出看起來是這樣的:

這是用孟加拉語字體

爲孟加拉文本輸出

image

但是輸出文本已損壞。而原來一個看起來像這樣的:

原文爲孟加拉

image2

任何關於如何解決這類問題對於Android的unicode的幫助將得到高度讚賞。 N.B.我正在使用i-text 5.5.x

+0

您正在使用iText 5或更早版本。由於iText 5不支持Bangla文本,因此輸出被破壞是正常的。如果你想支持印度語言,你需要升級到iText 7並使用[pdfCalligraph add-on](https://itextpdf.com/itext7/pdfcalligraph)。閱讀[pdfCalligraph白皮書](https://developers.itextpdf.com/sites/default/files/attachments/Whitepaper_pdfCalligraph_2017.pdf)瞭解更多信息。 iText 7與iText 5具有相同的許可證,但pdfCalligraph一直保持關閉源以避免濫用。 –

回答

0

使用顯示的字體。

BaseFont base = BaseFont.createFont("c:/windows/fonts/arial.ttf", BaseFont.WINANSI); 
Font font = new Font(base, 11f, Font.BOLD);