【问题标题】:Itext PDF writer, Is there any way to allow unicode subscript symbol in the pdf? (Without setTextRise)Itext PDF writer,有没有办法在pdf中允许unicode下标符号? (没有 setTextRise)
【发布时间】:2014-07-16 04:25:45
【问题描述】:

我一直在尝试使用 Itext PDF 编写器创建 PDF 文件。我发现默认字体中不允许使用上标 (0,4,5,6,7,8,9) 和下标 (0,1,2,3,4,5,6,7,8,9) .默认设置下,PDF 文本中只允许使用上标 1、2、3。

我的 PDF 中的字符串包含下标和上标字符,我可以在 PDF 中显示它们吗?

我搜了一下发现:

  1. setTextRise() 方法用于更改文本相对于当前行的位移,我不能使用它,因为我不知道哪些字符要超级/下标。
  2. 是否有将文本的编码/字体更改为 UTF-8 的设置,以便允许所有 unicode 符号?

或其他方式,因为我必须显示化学符号,如 H₂SO⁴、O₂ 等。

这会很有帮助,谢谢!

【问题讨论】:

  • 您声称 iText 不支持 UNICODE 上标字符。这种指控是错误的。 iText 支持许多不同的字体,如果字体包含 UNICODE 和特定字形,iText 允许您使用它。你应该改写你的问题并问:我在哪里可以找到包含上标和下标字符的 font 以便我可以将它们与 iText 结合使用?
  • 好的,谢谢。我编辑了这个问题。对不起,我并没有声称 IText 不支持 UNICODE,我只是说,我无法在默认设置中找到一些支持。是的,按照你的建议,我会检查不同的字体。

标签: java pdf unicode pdf-generation itext


【解决方案1】:

请查看我在回答您的问题时写的SubSuperScript 示例。我这样写 H₂SO⁴:

BaseFont bf = BaseFont.createFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
Font f = new Font(bf, 10);
Paragraph p = new Paragraph("H\u2082SO\u2074", f);
document.add(p);

我在 Wikipedia 上找到了特定字符的值:http://en.wikipedia.org/wiki/Unicode_subscripts_and_superscripts

如您所见,iText 完全能够显示用下标或上标书写的特殊字符:sub_superscript.pdf

我在编写此示例时遇到的主要问题是找到支持特定字形的字体。这就是我在之前的评论中解释的。我最终使用了一种名为“Carbo Regular”的字体。

【讨论】:

  • 您好,我按照您的建议尝试了更多字体。这为我解决了这个问题。我会发布它作为答案。谢谢。
【解决方案2】:

我可以通过使用这段代码来解决这个问题:

我必须注册一种新字体“Arial Unicode MS”

FontFactory.register("Path/to/font/arial unicode ms.ttf","Arial Unicode MS");

然后,在编写 pdf 时,我不得不在我的字符串中使用这种字体:

FontFactory.getFont("Arial Unicode MS",BaseFont.IDENTITY_H,BaseFont.EMBEDDED);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 2022-07-07
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    相关资源
    最近更新 更多