java - JasperReports 在导出 pdf 时不保留字体

标签 java jasper-reports export-to-pdf

我的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>

这是填充报告并创建 pdf 的 java 代码:

filledReport = JasperFillManager.fillReport(report, params, dataSource);
JasperExportManager.exportReportToPdfFile(filledReport, data.getPdfInfo().getResourcesPath() + data.getPdfInfo().getFileName());

这是我的 jasperreports-fonts.xml 文件:

<?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>

有人有同样的问题吗?

最佳答案

@Erald 请参阅 Jasper 中的 Spring Boot 与 Reports 示例,在 pom 中存在 jasperreports 依赖项。 https://github.com/karelp90/control_asp

see the link to the report

see the report

关于java - JasperReports 在导出 pdf 时不保留字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41226665/

相关文章:

java - 无法将 getNamedQuery 结果转换为表类

java - jasper 报告多语言-在 spring boot 中生成 pdf 时无法显示字体

javascript - Web 编辑器的 PDF/PNG 导出功能

java - 在 JasperServer Reports 和 Postgres 上使用 IntegerList 进行过滤

gradle - 使用Gradle编译JasperReports会得到不受支持的版本错误

java - 碧 Jade 报告 : How to call the report in jsp page

java - JasperExportManager.exportReportToPdf(jp) 在 Jar 文件中不起作用

java - 如何在 Java 中播放波形 (wav) 文件

java - 编写一个程序,在给定以下条件的情况下计算所有数字的平方和?

java - 单次和双重检查延迟初始化