【问题标题】:generating Persian PDF with iText使用 iText 生成波斯语 PDF
【发布时间】:2014-09-01 06:25:31
【问题描述】:


我知道很多人以前可能问过这个问题。我已经阅读了几乎所有的内容`但它不能帮助我解决我的问题。
我正在使用 iText java 库来生成波斯语 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”包含一些波斯字符。

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

【问题讨论】:

  • 尝试在创建段落时而不是稍后设置字体:Paragraph p1 = new Paragraph("سلام دوست من", a);
  • 亲爱的@ChrisHaas,它对我有用!我现在可以看到字符了。但我现在有另一个问题......字符显示为分开而不是“连接”,因为它应该在波斯正字法中:(

标签: java pdf-generation itext persian


【解决方案1】:

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

【讨论】:

  • 亲爱的 Vahid,我查看了您的网站“dotnettips”,非常棒!但我使用的是 java iText,但你的建议是关于 C#。但我试图在java中实现它们。你可以给我发一封电子邮件并讨论一下吗? rthenamvar@gmail.com
  • iText/iTextSharp 的 Java 和 C# 端口非常相似。在 Java 版本中你有 p1.setFont(a),在 C# 版本中你将有 p1.Font = a 等等。
  • 亲爱的瓦希德,是的,他们真的很相似!现在它对我有用!只是另一个问题:文本是左对齐的,尽管我在“dotnettips”的教程中做了你所说的一切。你不知道我怎样才能把它带到页面的右侧吗?!
  • 您可以使用 RunDirection = PdfWriter.RUN_DIRECTION_RTL 将其包装在 PdfPTable 中。或者你可以试试ColumnText objects。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
  • 1970-01-01
  • 2012-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多