其中PDF生成API(Java)的支持古吉拉特语字体?(Which PDF Generation A

2019-07-29 07:42发布

我曾尝试iText的,PDFBox的与Oracle表单。 而且我也赢得成功在iText的情况下产生古吉拉特语PDF文件。 但是,遗憾的是它不产生在古吉拉特适当的字体(UTF-8)语言。

我有我的项目在JDK 1.4是强制使用。 所以,我需要API的旧版本支持古吉拉特语字体。

请建议,如果任何选项。

示例代码:

public void GeneratePDFusingiText(String lStrGujaratidata)
  {
    try
    {

      BaseFont bf = BaseFont.createFont("C:\\Windows\\Fonts\\Shruti.ttf",  BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
      Font font = new Font(bf, 12);
      Document document = new Document();
      PdfWriter.getInstance(document, new FileOutputStream("D:/GeneratePDFusingiText.pdf"));
      document.open();
      document.add(new Paragraph(lStrGujaratidata, font));
      document.close();
    }
    catch(Exception e)
    {
      System.out.println("Exception while generating PDF");
      e.printStackTrace();
    }
   } 

编辑1:

也许是没有得到显示的图像。 据载这里 。

编辑2:

第1步),我输入一个字符串古吉拉特语谷歌音译。

步骤2)使用我的软件BableMap利用国土资源捆绑使用它把它转换成Unicode。

问题:我有一个字符串: (Biladi)

这是unicode的将是:\ u0AAC \ u0ABF \ u0AB2 \ u0ABE \ u0AA1 \ u0AC0

检查上面以粗体显示的Unicode字符。 这就是我得到的问题。 现在,如果我改变这个unicode到\ u0ABF \ u0AAC \ u0AB2 \ u0ABE \ u0AA1 \ u0AC0,它打印的PDF适当的输出。

同时它打印在HTML即输出错误:િબલાડી

我必须将它们之间的管理英寸

我一直在使用“谷”和“gu.UTF-8”和“UTF-8”尝试。 但是,每次我收到相同的输出。

Answer 1:

更新答案

您的评论后,我意识到我错了,即音调符号的字符在字节序列第二出现,即使它应该被渲染的主角左侧。

所以,事实证明,iText的不支持这种类型的渲染上印度语charactersets的。 粗略地说,iText的使用AWT的Graphics2D渲染非拉丁Unicode字符,一个接一个,如PDF图像。 (我想这是因为相应的字体不一定是每个人的计算机上安装)。 此功能不会采取这种特殊的顺序考虑。

iText的不支持阿拉伯语类似的行为,利用贡献的另一家开发商的类。 见com.itextpdf.text.pdf.ArabicLigaturizer 。 也许你可以自己创建一个类似的? (!)

它看起来像这样已经到来之前:

  • http://thread.gmane.org/gmane.comp.java.lib.itext.general/56702/focus=59552
  • http://itext-general.2136553.n4.nabble.com/patch-for-complex-scripts-indic-rendering-td2167588.html

原来的答案

KEM chho,

我相信,iText的是显示正确的字符,但你输入的第2个字符已经“翻转”你翻译的字符串转换成Unicode点之前。 所以,问题发生之前的数据甚至已经开始iText的。

根本的问题是,“第一个”字符是“前基”字符,这是一种类型的变音符号 。 这是一个有点像欧洲的文本“口音”,因为它不能单独存在,它的目的是为了美化另一个字符。 在这种情况下它会变成“BA”(બ)成“毕”。

你会看到的int Unicode的代码页,第一个字符(િ)确实码点\ u0ABF,第二个(બ)是\ u0AAC: http://en.wikipedia.org/wiki/Gujar%C4%81ti_script #Unicode

因此,谷歌的地方和音译您的代码点表示之间,这些字符得到了翻转。 所以,你需要检查你是怎么做的翻译。

你是如何将这些字符转换成代码点?

看似有些口译放置“预基地”后的主辅音,而不是之前:

  • 请注意,当您粘贴这些字符到(Linux)的终端,第2个字符出来后到前。 我相信类似的事情发生了你。
  • 您还会注意到,当你尝试编辑在谷歌音译这个词,你不能把第2个字符之间的光标,当你打退格键,左边字符右边之前删除。

所以,如果你能在哪里工作这个“翻转”发生,那么希望您的解决方案将提出自己。

希望这可以帮助



文章来源: Which PDF Generation API (Java) supports Gujarati Font?