PDF 中需要 Arial 字体(BIRT pdf 渲染器,Linux)

Posted

技术标签:

【中文标题】PDF 中需要 Arial 字体(BIRT pdf 渲染器,Linux)【英文标题】:Arial font required in PDF (BIRT pdf renderer, Linux) 【发布时间】:2010-11-06 16:16:58 【问题描述】:

我使用 BIRT IDE 创建了一个 rptdesign 文件。此文件内容为 Arial 字体,当我在 Windows 中将报告导出为 PDF 时,它可以正常工作。

我使用默认 viewerServlet 创建报告。但是当我将报表移动到 linux 系统时,报表中的所有内容都以 Times New Roman 字体显示,而不是 PDF 文件中的 Arial。

然后我将 Arial.ttf 文件复制到 /var/font/truetype 并将以下行添加到 platform/plugins/org.eclipse.birt.report.engine.fonts_2.3.2.r232_20090202/fontsConfig.xml

    <font-paths>
        ---------------
        ---------------
        ---------------
        <path path="/var/font/truetype" />
    </font-paths>

添加此行后,所有内容都以Arial字体出现,但是粗体的内容似乎被压缩并且看起来很丑。

有人遇到过这个问题并有解决办法吗?

谢谢 问候, 阿伦

【问题讨论】:

我不知道你的特定框架,但它不提供将使用的字体嵌入到 PDF 中的可能性吗? 【参考方案1】:

然后我将 Arial.ttf 文件复制到 /var/font/truetype

Arial.ttf 仅包含纯字体版本。 对于粗体、斜体和斜体粗体,有不同的文件(arialbd.ttf 等)。 也复制这些。

【讨论】:

【参考方案2】:

我花了几个小时寻找这个:

export BIRT_FONT_PATH=/usr/share/fonts/truetype

执行此操作并完成!

【讨论】:

【参考方案3】:

这是我的 fontsConfig_pdf.xml 文件

<font>
<font-aliases>
    <mapping name="sans-serif" font-family="Arial" />
    <mapping name="serif" font-family="Times-Roman" />
    <mapping name="monospace" font-family="Courier" />
</font-aliases>
<font-encodings>
    <encoding font-family="Times-Roman" encoding="Cp1252" />
    <encoding font-family="Helvetica" encoding="Cp1252" />
    <encoding font-family="Courier" encoding="Cp1252" />
    <encoding font-family="Zapfdingbats" encoding="Cp1252" />
    <encoding font-family="Symbol" encoding="Cp1252" />
    <encoding font-family="STSong-Light" encoding="UniGB-UCS2-H" />
    <encoding font-family="STSongStd-Light" encoding="UniGB-UCS2-H" />
    <encoding font-family="MHei-Medium" encoding="UniCNS-UCS2-H" />
    <encoding font-family="MSung-Light" encoding="UniCNS-UCS2-H" />
    <encoding font-family="MSungStd-Light" encoding="UniCNS-UCS2-H" />
    <encoding font-family="HeiseiMin-W3" encoding="UniJIS-UCS2-H" />
    <encoding font-family="HeiseiKakuGo-W5" encoding="UniJIS-UCS2-H" />
    <encoding font-family="KozMinPro-Regular" encoding="UniJIS-UCS2-H" />
    <encoding font-family="HYGoThic-Medium" encoding="UniKS-UCS2-H" />
    <encoding font-family="HYSMyeongJo-Medium" encoding="UniKS-UCS2-H" />
    <encoding font-family="HYSMyeongJoStd" encoding="UniKS-UCS2-H" />
</font-encodings>
<font-paths>
        <path path="/var/fonts/truetype"/>
</font-paths>
<composite-font name="all-fonts">
    <font font-family="Times-Roman" catalog="Western" />
    <font font-family="MSung-Light" catalog="Chinese" />
    <font font-family="HeiseiKakuGo-W5" catalog="Japanese" />
    <font font-family="HYGoThic-Medium" catalog="Korean" />
</composite-font>
</font>

【讨论】:

【参考方案4】:

谁能告诉我有没有 linux中Arial字体的问题,如果 字符设置为粗体

对我们来说一切都很好。下面是我的 fontsConfig.xml 补丁:

<font-aliases>
    <mapping name="sans-serif" font-family="Arial" />
    ...
</font-aliases>
<font-paths>
    <path path="fonts"/>
</font-paths>

放入字体文件夹arial.ttf和arial.xml文件。

【讨论】:

您好,感谢您的回答。但它仍然不适合我。我在 fontsConfig_pdf.xml 文件中添加了字体别名和字体路径。您能告诉我报告中的粗体文本是如何工作的吗?看起来还可以吗? 是的。大胆的 Arial 看起来不错。你有多个 fontsConfig 文件吗?我建议你(如果可能的话)保留 1 个文件 fontsConfig.xml 并配置文件中的所有内容。【参考方案5】:

尝试像这样明确说明您的字体路径:

<font-paths>
   <path path="/var/font/truetype/arial.ttf" />
</font-paths>

设置此属性(字体路径)会导致默认字体目录被忽略,而仅支持此集中的路径。这将使 Arial 成为 PDF 的唯一可用字体。要包含默认字体(TNR、Courier 等),请将 eclipse 插件下的默认路径(org.eclipse.birt.report.engine.fonts)添加到您的字体路径条目中。

您也可以选择仅将 Arial.ttf 添加到默认目录并从字体路径中删除所有条目并以这种方式选择 Arial 类型。无论哪种方式都应该有效。

祝你好运。

【讨论】:

在这样做之后,粗体字符也显得非常粗体和压缩。我认为它与包含字体文件夹相同。它不会加载所有字体,而是仅加载 Arial 字体。 Arial.ttf 在字体本身中有一个粗体变体。只要找到字体类,就是 PDF 引擎在处理粗体字重时遇到问题。

以上是关于PDF 中需要 Arial 字体(BIRT pdf 渲染器,Linux)的主要内容,如果未能解决你的问题,请参考以下文章

如何配置 BIRT 报告引擎直接从类路径加载字体?

在 BIRT 报告中定义书签,以便在 pdf 输出中显示

TCPDF - 在 iPad 上查看 PDF 时不显示嵌入的 ttf 字体

LabelHandle 上的 canShrink 属性不适用于使用 BIRT 的 PDF 和 EXCEL 报告

html转pdf时字体的加粗怎么设置

字体未在 ghostscript 中正确映射