当前位置: 首页 > 知识库问答 >
问题:

当以pdf格式导出时,JasperReports不维护字体

史昀
2023-03-14

我的Java应用程序生成了一个填充JasperReports报表的pdf文件,但当我打开pdf文件时,它的字体总是“Arial”,在报表中设置为“DeJavu Sans”。

当我使用JasperReports函数导出到pdf文件时,一切正常(之后,我导入了DejaVu Sans的.ttf文件)。只有当我使用Java应用程序时,问题才会持续存在。

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="sub_21" pageWidth="515" pageHeight="842" columnWidth="515" leftMargin="0" rightMargin="0" topMargin="30" bottomMargin="0" uuid="34ff3034-41c3-4268-b500-7252cbe01a14">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
    <parameter name="acp" class="acp.pdfengine.entities.PdfData"/>
    <detail>
        <band height="376" splitType="Stretch">
            <textField isBlankWhenNull="true">
                <reportElement positionType="Float" x="0" y="0" width="181" height="21" isRemoveLineWhenBlank="true" uuid="7b1fe94a-28dd-42d1-b6db-ee2dcc2d7020"/>
                <textElement>
                    <font fontName="DejaVu Sans" size="12" isBold="true"/>
                </textElement>
                <textFieldExpression><![CDATA[$P{acp}.getPdfWords().getRESULT_title()]]></textFieldExpression>
            </textField>
filledReport = JasperFillManager.fillReport(report, params, dataSource);
JasperExportManager.exportReportToPdfFile(filledReport, data.getPdfInfo().getResourcesPath() + data.getPdfInfo().getFileName());
<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
    <fontFamily name="DejaVu Sans" visible="true">
      <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>
    </fontFamily>

    <fontFamily name="Pictonic" visible="false">
        <normal>
            <ttf>net/sf/jasperreports/fonts/pictonic/pictonic.ttf</ttf>
            <svg>net/sf/jasperreports/fonts/pictonic/pictonic.svg</svg>
            <eot>net/sf/jasperreports/fonts/pictonic/pictonic.eot</eot>
            <woff>net/sf/jasperreports/fonts/pictonic/pictonic.woff</woff>
        </normal>
        <pdfEncoding>Identity-H</pdfEncoding>
        <pdfEmbedded>true</pdfEmbedded>
    </fontFamily>
</fontFamilies>

有人有同样的问题吗?

共有1个答案

海保臣
2023-03-14

@Erald请参见这个在Jasper中使用报表的Spring Boot示例,在pom中有jasperreports依赖项。https://github.com/karelp90/control_asp

 类似资料:
  • 问题内容: 以下代码获取结果,该结果适用于PDF和XLSX。对于HTML,会引发异常。 HTML的例外情况是 : 对于v6.0和v5.6,该错误相同。这曾经在v5.0中可用(某些类在v5.6中已弃用)。 如何导出各种格式的报告,包括HTML? 问题答案: 对于HTML和其他格式: 使用以下命令调用它:

  • 主要内容:JasperReports 导出为PDF/HTML/XLS格式 我们在上一章《JasperReports 查看打印报表》中已经看到,如何打印和查看一个 JasperReport 生成的文档。在这里,我们将看到如何将这些报表转换或导出为其他格式,例如 PDF、HTML 和 XLS。Facade 类net.sf.jasperreports.engine.JasperExportManager就是用来实现这个功能的。导出意味着将JasperPrint对象(.jrpr

  • Im目前使用XHTMLImporterImpl版本8.0和Docx4j8.23 这是我的转换代码

  • 问题内容: 我必须提供一些导出功能到我的网站,例如CSV或PDF。Java是否有功能强大且免费的工具将HTML页面转换为PDF格式? 问题答案: 与一起使用可以将HTML内容转换为PDF。 以下示例在某种程度上帮助您理解XHTML到PDF的转换。 使用飞碟API的示例 : 您需要以下库: core-renderer.jar iText-2.0.8.jar 您可以在中找到这些资源。 例1:使用XML

  • 问题内容: 我在JasperReports 4.1.1中找不到如何在.xlsx中导出文件。班上: 没有Xlsx等效项。而且我找不到参数来设置从xls到xlsx的输出格式。 问题答案: 该 JRXlsxExporter 类应该用于在出口 XLSX 格式。 在JasperReports 5.5.2之前的版本中使用导出器的示例 直到 JasperReports 5.5.1, 此代码可用于以 xlsx 格

  • 我正在测试Kafka的弹性(apache;Kafka2.12-1.1.0)。我所期望的是,当某个节点崩溃时,某个主题的ISR应该增加它自身(即复制到可用节点)。我花了4天时间在谷歌上搜索可能的解决方案,但毫无用处。 拥有3个节点集群,并使用docker(wurstmeister)在服务器中更新了以下内容,在集群上创建了3个代理、3个动物园管理员(1node=1broker 1 zookeeper)