【问题标题】:JasperReports does not generate report with boldJasperReports 不生成粗体报告
【发布时间】:2015-12-30 17:30:03
【问题描述】:

我已阅读 JasperReports - Fonts Sample (version 6.2.0) 官方教程,以使用与设计字体样式相同的方式生成我的报告。

这是我的jasperreports_extension.properties

net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.dejavu=net/sf/jasperreports/fonts/fonts.xml
net.sf.jasperreports.extension.simple.font.families.arial=net/sf/jasperreports/fonts/fonts.xml

这是我的fonts.xml

<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
    <fontFamily name="DejaVu Sans">
        <normal>net/sf/jasperreports/fonts/dejavu/DejaVuSans.ttf</normal>
        <bold>net/sf/jasperreports/fonts/dejavu/DejaVuSans-Bold.ttf</bold>
        <italic>net/sf/jasperreports/fonts/dejavu/DejaVuSans-Oblique.ttf</italic>
        <boldItalic>net/sf/jasperreports/fonts/dejavu/DejaVuSans-BoldOblique.ttf</boldItalic>
        <pdfEncoding>Identity-H</pdfEncoding>
        <pdfEmbedded>true</pdfEmbedded>
        <exportFonts>
            <export key="net.sf.jasperreports.html">'DejaVu Sans', Arial, Helvetica, sans-serif</export>
            <export key="net.sf.jasperreports.xhtml">'DejaVu Sans', Arial, Helvetica, sans-serif</export>
        </exportFonts>
        <!--
        <locales>
            <locale>en_US</locale>
            <locale>de_DE</locale>
        </locales>
        -->
    </fontFamily>

    <fontFamily name="DejaVu Serif">
        <normal>net/sf/jasperreports/fonts/dejavu/DejaVuSerif.ttf</normal>
        <bold>net/sf/jasperreports/fonts/dejavu/DejaVuSerif-Bold.ttf</bold>
        <italic>net/sf/jasperreports/fonts/dejavu/DejaVuSerif-Italic.ttf</italic>
        <boldItalic>net/sf/jasperreports/fonts/dejavu/DejaVuSerif-BoldItalic.ttf</boldItalic>
        <pdfEncoding>Identity-H</pdfEncoding>
        <pdfEmbedded>true</pdfEmbedded>
        <exportFonts>
            <export key="net.sf.jasperreports.html">'DejaVu Serif', 'Times New Roman', Times, serif</export>
            <export key="net.sf.jasperreports.xhtml">'DejaVu Serif', 'Times New Roman', Times, serif</export>
        </exportFonts>
    </fontFamily>

    <fontFamily name="DejaVu Sans Mono">
        <normal>net/sf/jasperreports/fonts/dejavu/DejaVuSansMono.ttf</normal>
        <bold>net/sf/jasperreports/fonts/dejavu/DejaVuSansMono-Bold.ttf</bold>
        <italic>net/sf/jasperreports/fonts/dejavu/DejaVuSansMono-Oblique.ttf</italic>
        <boldItalic>net/sf/jasperreports/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf</boldItalic>
        <pdfEncoding>Identity-H</pdfEncoding>
        <pdfEmbedded>true</pdfEmbedded>
        <exportFonts>
            <export key="net.sf.jasperreports.html">'DejaVu Sans Mono', 'Courier New', Courier, monospace</export>
            <export key="net.sf.jasperreports.xhtml">'DejaVu Sans Mono', 'Courier New', Courier, monospace</export>
        </exportFonts>
    </fontFamily>

    <fontFamily name="Arial">
        <normal>net/sf/jasperreports/fonts/arial/arial.ttf</normal>
        <bold>net/sf/jasperreports/fonts/arial/arialbd.ttf</bold>
        <italic>net/sf/jasperreports/fonts/arial/ariali.ttf</italic>
        <boldItalic>net/sf/jasperreports/fonts/arial/arialbi.ttf</boldItalic>
        <pdfEncoding>Identity-H</pdfEncoding>
        <pdfEmbedded>true</pdfEmbedded>
        <exportFonts>
            <export key="net.sf.jasperreports.html">Arial</export>
            <export key="net.sf.jasperreports.xhtml">Arial</export>
        </exportFonts>
    </fontFamily>

    <fontFamily name="Arial Black">
        <normal>net/sf/jasperreports/fonts/arial/ariblk.ttf</normal>
        <pdfEncoding>Identity-H</pdfEncoding>
        <pdfEmbedded>true</pdfEmbedded>
        <exportFonts>
            <export key="net.sf.jasperreports.html">Arial Black</export>
            <export key="net.sf.jasperreports.xhtml">Arial Black</export>
        </exportFonts>
    </fontFamily>

    <!--
        Mapping Java logical fonts, for the sake of HTML export only.
    -->

    <fontFamily name="SansSerif">
        <exportFonts>
            <export key="net.sf.jasperreports.html">'DejaVu Sans', Arial, Helvetica, sans-serif</export>
            <export key="net.sf.jasperreports.xhtml">'DejaVu Sans', Arial, Helvetica, sans-serif</export>
        </exportFonts>
    </fontFamily>
    <fontFamily name="Serif">
        <exportFonts>
            <export key="net.sf.jasperreports.html">'DejaVu Serif', 'Times New Roman', Times, serif</export>
            <export key="net.sf.jasperreports.xhtml">'DejaVu Serif', 'Times New Roman', Times, serif</export>
        </exportFonts>
    </fontFamily>
    <fontFamily name="Monospaced">
        <exportFonts>
            <export key="net.sf.jasperreports.html">'DejaVu Sans Mono', 'Courier New', Courier, monospace</export>
            <export key="net.sf.jasperreports.xhtml">'DejaVu Sans Mono', 'Courier New', Courier, monospace</export>
        </exportFonts>
    </fontFamily>
</fontFamilies>

我将字体放在我的 jar 中,但是当我生成报告时,字体样式仍然没有出现。我错过了什么吗?

【问题讨论】:

  • 我不认为你对 itext 库有任何问题,也许你的类路径中有 jasperreports-fonts-6.xx 并且它正在使用它而不是你的字体扩展......这是最可能是一个类路径问题(可能不止一个 jasperreports_extension.properties)

标签: fonts jasper-reports


【解决方案1】:

你的 xml 和 ttf 文件需要有正确的路径,它遵循与 java 包相同的样式。

例子

如果您的 jasperreports_extension.properties 位于项目根文件夹中(我建议您这样做,因为它需要由 jasper-reports 找到)并且您在名为 @987654330 的文件夹中有 fonts.xmlttf 文件@。

jasperreports_extension.properties 中的引用将是:

net.sf.jasperreports.extension.simple.font.families.myFonts=fonts/fonts.xml

fonts.xml

<fontFamily name="DejaVu Sans">
    <normal>fonts/DejaVuSans.ttf</normal>
    <bold>fonts/DejaVuSans-Bold.ttf</bold>
    .....
</fontFamily>

如果您仍然有问题,我建议您使用像 这样的IDE,它们会让您自动为字体扩展(包括您的ttf)生成一个jar。

在生成 pdf 导出文件时,将这个 jar 包含在类路径中就足够了。

如何使用iReportJasperSoft Studio生成字体扩展jar

【讨论】:

  • 我的文件有什么问题?我通过 maven 下载 jar 并修改了这些文件并仅添加了我的字体。更令人好奇的是,我使用的 Arial 和 Arial Black 有无粗体。我刚刚通过阅读您提供的教程生成了 jar,但仍然无法正常工作。
  • @PhilippeGioseffi 是根文件夹中的 jasperreports_extension.properties,是部署在 net/sf/jasperreports/fonts/ 文件夹中的 fonts.xml 是部署在 net/sf/jasperreports/fonts/dejavu/ 中的 ttf和 net/sf/jasperreports/fonts/arial/???你做了一个和jasper报告一样的包似乎很奇怪......
  • 如果您生成为教程,它将工作确保它在您的类路径中的 jar(并删除旧的 jasperreports_extension.properties)....
  • 当然,textField 需要使用 fonts.xml 中指示的字体,请参阅此问题,例如 font-extension stackoverflow.com/questions/33940126/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 2011-03-02
  • 2013-09-10
相关资源
最近更新 更多