2012-04-12 109 views
3

爲了生成加蓋的PDF,我使用java上的ITextpdf,有時生成的PDF格式是阿拉伯語,我面臨一個有趣的問題。 要讓從右到左(RTL)創建的阿拉伯文頁面使用具有屬性PdfPCell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL)的表和單元格。當我使用這個屬性時,阿拉伯文根本不顯示,如果我避免了對這個屬性的調用,阿拉伯文字符串被正確顯示,這意味着我不應該有字體問題,我真的不知道這是否是IText或I問題我只是想念一些東西。ITextPdf:從右到左(RTL)打印阿拉伯文字符串

這一小段代碼的和平,顯示正確的阿拉伯語字符串:

BaseFont bf = BaseFont.createFont(Application.getBASEPATH() + "fonts/arabic.ttf",BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
Font trebuchetSmaller = new Font(bf, 10, 0); 

PdfPTable tbl = new PdfPTable(1); 
PdfPCell cell = new PdfPCell(); 
Paragraph paragraph = new Paragraph(); 
paragraph.add(new Phrase("ربط صفحة على شبكة الإنترنت"), trebuchetSmaller)); 
cell.addElement(paragraph); 
tbl.addCell(cell); 

這裏所需要的變化,這使得阿拉伯語字符串消失:

BaseFont bf = BaseFont.createFont(Application.getBASEPATH() + "fonts/arabic.ttf",BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
Font trebuchetSmaller = new Font(bf, 10, 0); 

PdfPTable tbl = new PdfPTable(1); 
PdfPCell cell = new PdfPCell(); 
cell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 
Paragraph paragraph = new Paragraph(); 
paragraph.add(new Phrase("ربط صفحة على شبكة الإنترنت"), trebuchetSmaller)); 
cell.addElement(paragraph); 
tbl.addCell(cell); 

如果我使用PdfWriter.RUN_DIRECTION_RTL與英文字符串它以正確的格式正確顯示。如果我使用混合英文和阿拉伯文字符的字符串,只顯示英文字符。

+0

您可以使用Spannabe。 [有關於它的詳細信息] [1] [1]:http://stackoverflow.com/a/11612380/1278748 – 2012-11-25 17:00:38

+0

使用字體ARIAL_FONT – shareef 2012-12-19 11:55:16

回答

3

更改您的代碼,包括已註冊的字體:

new Phrase("آزمايش", font) 

您也可以直接添加詞組:

PdfPCell pdfCell = new PdfPCell(new Phrase("آزمايش", font)); 
pdfCell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 
+0

這是iText的5樣品。 itext怎麼樣7.我們如何改變itext 7中的方向? – 2018-01-10 06:10:50

+1

https://developers.itextpdf.com/examples/font-examples/clone-language-specific-examples – VahidN 2018-01-10 10:52:01

+0

我測試過了,沒有變化,我看到我的文字從左向右分開的單詞! – 2018-01-10 12:32:34

1

非常感謝。 其實問題是在RTL中切換時使用的字體表現不佳。我在這個地址找到了很多非常有趣的unicode阿拉伯字體:http://cooltext.com/Fonts-Unicode-Arabic感興趣的人。

+0

嗨,您能幫我嗎?!我想創建一個阿拉伯文pdf,並且不會讓文本從右到左開始,而阿拉伯字符以上的代碼是分開的,反之亦然,從LTR – 2018-03-05 19:08:56

相關問題