将报告导出为PDF时更改字体

时间:2013-10-07 19:20:11

标签: fonts jasper-reports export-to-pdf jaspersoft-studio

我正在使用 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>

5 个答案:

答案 0 :(得分:20)

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

步骤

在Jaspersoft Studio中创建字体

您应该使用 Window - &gt;创建一个新字体首选项对话框:

enter image description here

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

enter image description here

创建报告的样式

您应该在上下文菜单的帮助下创建一个新样式:

enter image description here

之后,您可以为此样式设置 font

enter image description here

之后你可以使用这种新风格:

enter image description here

样本

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 中的报告设计:

enter image description here

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

enter image description here


注意

您可以找到有关Font Extensions here

的更多信息

答案 1 :(得分:3)

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

    InputStream reportStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("/reports.jrxml");
    JasperReport report = JasperCompileManager.compileReport(reportStream);
    jasperPrint = JasperFillManager.fillReport(report, parameters, dataSource);

答案 2 :(得分:2)

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

如果您希望在Jasper Report PDF文件查看器中嵌入字体,并且字体列表中没有该字体,您只需:

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

就是这样。 谢谢。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

同样的事情发生在我身上,我按照这里的说明做了所有配置,还是不行,还是没有考虑到jasperreports源jasperreports_extension.properties的配置文件。

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

jasperreports_extension.properties already added, skipping

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

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