Jaspersoft Studio中粗体在除sans serif字体外的字体中无法使用

7
在Jaspersoft Studio中,我创建了一个报告,想要以粗体显示标题。如果我使用无衬线字体,则可以正常工作。如果我使用其他字体,在Jaspersoft Studio的预览中显示为粗体,但在Jasper服务器上运行报告时不显示粗体。 请帮忙解决。

对于 PDF 中正确的字体显示,需要特别考虑。在作为嵌入式库使用的 JasperReports 中,字体扩展是一种解决方案。但我不知道如何在 Jasper 服务器上实现相同效果。 - mkl
请参见:http://community.jaspersoft.com/wiki/custom-font-font-extension - Dave Jarvis
4个回答

11

添加 Maven 构件对我有用

<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports-fonts</artifactId>
    <version>6.16.0</version>
</dependency>

7
您需要创建一个jasper字体扩展jar并将其放置在classpath中,包括编译时(编译jrxmls时)和运行时(运行报表时)。 这是jar文件(例如jasperreports-fonts-5.5.2.jar)的样子:
图片1
图片2
jasperreports_extension.properties应该包含几个属性来初始化字体。(我使用基于Spring的字体初始化。如果尚未存在,您可能需要将一些Spring jar文件添加到classpath中,如spring-core、spring-beans等。)
net.sf.jasperreports.extension.registry.factory.fonts=net.sf.jasperreports.extensions.SpringExtensionsRegistryFactory
net.sf.jasperreports.extension.fonts.spring.beans.resource=fonts/fonts_def.xml

现在,fonts.xml 文件用于定义您想要添加的字体。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

   <bean id="fontBean001" class="net.sf.jasperreports.engine.fonts.SimpleFontFamily">
       <property name="name" value="Tahoma"/>
       <property name="normal" value="fonts/Tahoma.ttf"/>
       <property name="bold" value="fonts/Tahoma_Bold.ttf"/>
       <property name="pdfEmbedded" value="true"/>
   </bean>

   <bean id="fontBean002" class="net.sf.jasperreports.engine.fonts.SimpleFontFamily">
        <property name="name" value="Arial"/>
        <property name="normal" value="fonts/Arial.ttf"/>
        <property name="bold" value="fonts/Arial_Bold.ttf"/>
        <property name="italic" value="fonts/Arial_Italic.ttf"/>
        <property name="boldItalic" value="fonts/Arial_Bold_Italic.ttf"/>
        <property name="pdfEmbedded" value="true"/>
    </bean>

</beans>

请注意,属性"pdfEmbedded"的值为"true"。最后将您想要添加到jar包中的字体的.ttf文件添加到其中。


1

只需前往此网站,使用Jasper添加自定义字体到PDF:

使用字体扩展添加自定义字体

有一份图示指南教你如何创建它。只需为您的字体下载一个*.ttf文件(例如:Arial.ttf)

借助Eclipse创建扩展并将其导出为*.jar文件。

最后将*.jar文件添加到您的项目中。就这样。


0

我找到了一个对我有效的解决方案,也许对你也有帮助。

  • 问题:

所以,我在我的项目中使用Jaspersoft Studio来渲染PDF。我使用了一堆文本字段和静态文本。我使用了"Calibri"字体。我发现当我使用Spring Boot服务导出我的PDF时,粗体斜体粗斜体属性都丢失了。我发现一些静态文本保留了它们的样式。

  • 解决方案:

我只是打开了我的jrmxl文件的源代码,并发现一些文本字段有:

<textElement markup="styled">
    <font fontName="Calibri" size="9"/>
</textElement>

一些内容:
<textElement markup="styled">
    <font size="9"/>
</textElement>

没有 'fontName="Calibri"' 的那些都有样式,所以我对所有文本组件都进行了设置。而且我将样式组件保留在头部,就像这样:
<style name="boldItalic" fontName="Calibri" isBold="true" isItalic="true"/>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接