【问题标题】:Display character SQUARE M SQUARED (\u33a1) in generated pdf report在生成的 pdf 报告中显示字符 SQUARE M SQUARED (\u33a1)
【发布时间】:2019-02-11 12:34:36
【问题描述】:

我正在使用以下代码用于 jasper pdf 报告来显示字符 M SQUARED (\u33a1)

<?xml version="1.0" encoding="UTF-8"?> 
...

<textField isStretchWithOverflow="true">
            <reportElement x="0" y="0" width="609" height="20" uuid="df8665ef-2226-4aaa-bd04-09805582eaef"/>
            <textElement verticalAlignment="Middle">
                <font fontName="SomeCustFont" size="20" pdfEncoding="Cp1252" isPdfEmbedded="true"/>
            </textElement>
            <textFieldExpression><![CDATA["Squared M : \u33a1"]]></textFieldExpression>
        </textField>

对于此代码,我无法在 PDF 中看到 unicode 字符。它只是空白。但在 XLSX 中,我可以看到角色。 我尝试了以下操作:

  1. 移除 pdfEncoding
  2. 设置 isPdfEmbedded="false"

但没有运气

更新:看来,我使用的自定义字体不支持平方 m 字符。我无法添加新字体或更新现有的自定义字体。但我可以为该特定字符使用任何或内置字体。如何使用内置字体实现这一点?

我试过了:

fontName="Courier" pdfFontName="Courier" jasper 的这种内置字体支持该字符,但由于无法找到字体而出现错误。

【问题讨论】:

  • 你在使用字体扩展吗?
  • 是的。我才知道我使用的字体扩展不支持那个 unicode 字符。如果没有我当前丢弃的字体,我如何使用另一个字体?有什么解决办法吗?

标签: utf-8 jasper-reports export-to-pdf


【解决方案1】:

这里的主要问题是 \u33a1 是扩展的 ASCII unicode。大多数免费字体不支持这一点。因此,我没有使用这个平方 m,而是使用了英文 'm' 字符,后跟上标 2 unicode \u00b2,它几乎适用于所有字体。

\u33a1 -> m\u00b2

【讨论】:

    猜你喜欢
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 2015-03-27
    • 2016-09-04
    • 1970-01-01
    • 2015-07-06
    • 2019-10-26
    • 2019-07-30
    相关资源
    最近更新 更多