【问题标题】:Jasper ireport 3.7.6 font style not rendering in PDFJasper ireport 3.7.6 字体样式未在 PDF 中呈现
【发布时间】:2015-11-19 15:44:38
【问题描述】:

我正在使用 ireport 3.7.6 并尝试为不同的文本元素使用不同的字体。我对字体样式进行了必要的更改,并在我进行预览时显示出来,但是 java 应用程序生成的 PDF 只获取默认字体。我检查了 XML,它有 fontName="Times New Roman" 。请帮我解决这个问题。

【问题讨论】:

    标签: jasper-reports


    【解决方案1】:

    在最新版本的 jasper 报告中,font extensions 包含 5,6 种不同的字体。

    你需要一个.ttf版本的你喜欢显示的字体(可以在windows/font中找到Times new roman)。

    包含字体的最简单方法是通过ireport-designerJaspersoft Studio

    1. 获取所需的ttf字体。
    2. 在 ireport 或 studio 中安装字体
    3. 导出字体扩展名(这将创建一个 .jar)
    4. 将 jar 添加到类路径中。

    这是iReportJaspersoft Studio 中的这些步骤的链接

    【讨论】:

      【解决方案2】:

      尝试像这样设置 jasperreports.properties:

      # http://jasperreports.sourceforge.net/config.reference.html
      # http://jasperreports.sourceforge.net/sample.reference/fonts/index.html
      #
      #    net.sf.jasperreports.default.font.name=SansSerif - the default font name.
      #    net.sf.jasperreports.default.font.size=10 - the default font size.
      #    net.sf.jasperreports.default.pdf.font.name=Helvetica - the default PDF font.
      #    net.sf.jasperreports.default.pdf.encoding=Cp1252 - the default PDF character encoding.
      #    net.sf.jasperreports.default.pdf.embedded=false - by default PDF fonts are not embedded
      #
      net.sf.jasperreports.export.character.encoding=UTF-8
      net.sf.jasperreports.default.font.name=DejaVu Sans
      net.sf.jasperreports.default.font.size=10
      net.sf.jasperreports.default.pdf.font.name=DejaVu Sans
      net.sf.jasperreports.default.pdf.encoding=UTF-8
      net.sf.jasperreports.default.pdf.embedded=true
      

      jasperreports_extension.properties:

      net.sf.jasperreports.extension.registry.factory.fonts=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
      net.sf.jasperreports.extension.simple.font.families.myfamily=com/your/company/resources/fonts/jasper.xml
      

      并将您的 pdf 字体映射到物理字体 (jasper.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>
      
          <!--
              Mapping Java logical fonts, for the sake of HTML export only.
          -->
      
          <fontFamily name="SansSerif">
                  <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 Sans', Arial, Helvetica, sans-serif</export>
                  <export key="net.sf.jasperreports.xhtml">'DejaVu Sans', Arial, Helvetica, sans-serif</export>
              </exportFonts>
          </fontFamily>
          <fontFamily name="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="Monospaced">
                  <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 Sans Mono', 'Courier New', Courier, monospace</export>
                  <export key="net.sf.jasperreports.xhtml">'DejaVu Sans Mono', 'Courier New', Courier, monospace</export>
              </exportFonts>
          </fontFamily>
      
      </fontFamilies>
      

      和想要的字体到资源目录,把 jasperreports.jar jasperreports-fonts.jar jasperreports-javaflow.jar 放到类路径

      我在 Linux、WinXp、Win7 上对此进行了测试。渲染和导出工作正常

      【讨论】:

      • 我想在 tools->option->Jasper Report Properties 下添加属性吗?如果是这样,值是否相同?我想在哪里添加扩展名?我对 ireport 有点陌生。
      • 这仅适用于 ireport studio,但您不能将报表嵌入到您的应用中以获得良好的呈现 pdf。要在独立应用程序中使用,请在 jar 的顶部目录中设置 thou *.properties
      • 我正在使用 ireport 设计器。这也适用吗?
      • 不确定。此设置用于在应用程序中正确渲染 pdf
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-27
      • 2015-12-01
      • 2012-03-10
      相关资源
      最近更新 更多