10

我正在使用Jaspersoft Studio 5.2,并使用Courier New字体进行了报告,当我将其导出为 PDF 时,它会将字体更改为Arial

我只使用Studio工具。当我预览报告时没问题,但是当我导出时它发生了。

我可以如何处理我的报告以使用Courier New字体导出?

我在报告中使用的 textField 模型:

<textField pattern="dd/MM/yyyy  HH:mm:ss">
    <reportElement uuid="f50b279a-b480-498f-8af7-be7e23c4b80b" x="415" y="11" width="105" height="10"/>
    <textElement>
        <font fontName="Courier New" size="8"/>
    </textElement>
    <textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression>
</textField>
4

6 回答 6

24

您应该使用字体扩展机制。

脚步

在 Jaspersoft Studio 中创建字体

您应该使用Window -> Preferences对话框创建一个新字体:

在此处输入图像描述

使用字体系列对话框,您可以为您的字体设置ttf文件:

在此处输入图像描述

创建报表样式

您应该借助上下文菜单创建新样式:

在此处输入图像描述

之后,您可以为此样式设置字体:

在此处输入图像描述

之后,您可以使用这种新样式:

在此处输入图像描述

样本

jrxml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version last-->
<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="test_courier" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="2010b76c-0fe5-4a27-9c86-6846a6f9cc6a">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="Sample DB"/>
    <style name="CustomFont" fontName="Courier New"/>
    <queryString>
        <![CDATA[select task from tasks]]>
    </queryString>
    <field name="TASK" class="java.lang.String"/>
    <title>
        <band height="79" splitType="Stretch">
            <staticText>
                <reportElement uuid="9205f787-f3b4-4b21-b2d9-19f52824e187" style="CustomFont" x="280" y="36" width="70" height="20"/>
                <textElement/>
                <text><![CDATA[Title]]></text>
            </staticText>
        </band>
    </title>
    <detail>
        <band height="20" splitType="Stretch">
            <textField>
                <reportElement uuid="f23e8674-c45d-4dc7-92f3-93e5d0b41c16" style="CustomFont" x="0" y="0" width="70" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{TASK}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

Studio中的报告设计:

在此处输入图像描述

结果将是(由Jaspersoft Studion生成并在Adob​​e Reader中打开的pdf文件):

在此处输入图像描述


注意

您可以在此处找到有关字体扩展的更多信息

于 2013-10-07T20:24:25.830 回答
3

如果您的报告没有正确呈现任何字体,您的系统中的 iReport / JasperStudio 和 jasper 库可能存在一些兼容性问题。我在尝试使用 jasper 文件将报告导出为 pdf 时遇到了这个问题。解决方案是在我的代码中编译报告,如下所示:

    InputStream reportStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("/reports.jrxml");
    JasperReport 报告 = JasperCompileManager.compileReport(reportStream);
    jasperPrint = JasperFillManager.fillReport(报告,参数,数据源);
于 2014-10-13T14:33:05.370 回答
3

同样的问题也发生在我身上。我尝试了以下方法来找到解决方案 -

如果您想在Jasper ReportPDF 文件查看器中嵌入一种字体,而该字体在您的字体列表中不可用,您所要做的就是:

  • 首先下载您必须嵌入的字体的 .ttf 文件。
  • 之后,转到Window -> Preferences -> Jaspersoft Studio -> Fonts。您将看到一个用于添加字体的 .ttf 文件的框。
  • 添加字体的 .ttf 文件并打勾Embed this font to PDF。之后,您将在具有您之前提供的名称的字体列表中看到您的字体。
  • 选择字体并将其导出为 .jar 文件。如果要从应用程序中查看 pdf,请将字体的 jar 文件添加到应用程序的类路径中。

而已。谢谢你。

于 2016-12-29T08:40:53.420 回答
1

我遇到了类似的问题,并通过将所需的字体 ttf 文件添加到 jar 或现有的 jasperreport-fonts.jar 并将其依赖项添加到应用程序来解决。

于 2020-11-18T16:17:31.873 回答
0

同样的事情发生在我身上,我按照这里的指示做了所有的配置,但它没有工作,它仍然没有考虑到 jasperreports 源的配置文件jasperreports_extension.properties

在我的项目中,我使用 Maven 来管理 java 库,并且在组装过程中,它抛出了消息:

jasperreports_extension.properties already added, skipping

因此,我将源扩展文件放在第一个依赖项中,甚至在 jasperreports 之前。

然后我生成了 Maven 项目并且字体工作,因为 jasperreports_extension.properties 被优先考虑。

于 2021-04-26T03:43:35.083 回答
0

PDF 格式有自己的一套字体。而且,如果文档需要使用其他字体,则必须将它们嵌入 PDF 中。在 JasperReports 的第一个版本中,通过在文本元素上引入一些属性来解决这个问题,以允许指定 PDF 字体名称和编码,以及字体是否嵌入到最终 PDF 中。

这种方法仍可用于向后兼容,但现在已弃用和不鼓励使用。事实上,在最新版本的 Jaspersoft Studio 中,使用此属性的文本元素会显示警告图标和消息。这是因为字体扩展更好地处理了这个问题。因此,如果用户想在 PDF 导出中使用自定义字体,那么应该使用字体扩展来完成。

这是执行此操作的方法:带有字体扩展名的自定义字体

于 2021-09-09T19:56:16.523 回答