2014-07-10 103 views
4


我知道很多人之前可能会问这个问题。我几乎读过所有这些书,但它无法帮助我解决我的问题。
我正在使用iText Java库来生成波斯语PDF。我正在使用以下代码:使用iText生成波斯PDF

Document document = new Document(PageSize.A4,50,50,50,50); 
FileOutputStream fos = new FileOutputStream("D:\\ITextTest.pdf"); 
PdfWriter writer = PdfWriter.getInstance(document,fos); 
document.open(); 
BaseFont bf = BaseFont.createFont("C:\\Windows\\Fonts\\XB YagutBd.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
Font a = new Font(bf,10); 
Paragraph p1 = new Paragraph("سلام دوست من"); 
p1.setFont(a); 
document.add(p1); 
document.close(); 

但是,当我执行代码时,没有任何内容写入PDF文件,它是空白的。请注意,“XB YagutBd.ttf”是波斯语Unicode字体,“p1”包含一些波斯语字符。

我该怎么办?我陷入了这个问题......请帮助我。

+0

尝试在创建段落时设置字体,而不是稍后:'段落p1 =新段落('سلامدوستمن“,a);' –

+0

亲爱的@ChrisHaas它为我工作! 我现在可以看到角色了。 但我现在有另一个问题... 字符显示分开,不是“连接”,因为它应该是在波斯语拼写:( – rthenamvar

回答

2

只有一些iText元素支持RTL,例如PdfPCell,PdfPTable,ColumnText。 只有这些元素有RunDirection属性可以设置为PdfWriter.RUN_DIRECTION_RTL值。 (more info in Persian

+0

亲爱的瓦希德,我看了一下你的网站“dotnettips”,它很棒!但我使用的是java iText,但是你的建议是关于C#的,但我试图用java来实现它们 你可以给我发一封电子邮件并且有关于它的对话吗?[email protected] – rthenamvar

+0

iText的Java和C# iTextSharp非常相似,在Java版本中,你有'p1.setFont(a)',在C#版本中你将有'p1.Font = a'等等 – VahidN

+0

亲爱的Vahid,是的,它们真的很相似!对我来说, 只是另一个问题:文本是左对齐的,虽然我在你的教程中用“dotnettips”表达了你的意思。难道你不知道我怎么能把它带到pag的右侧è? – rthenamvar