标签:java pdf fonts maven jasper-reports
我在我的一个报告中使用多种字体,我将其导出为PDF,我使用IREPORT来设计我的报告.
在预览部分,报告看起来不错,但是当我从我的Web应用程序导出它时,看起来我在整个报告中使用了一种字体.
我搜索了这个问题,我找到了两个解决方案:
>将字体从IREPORT导出为.jar文件,并将其添加到我的项目中[不是一种干净的方式,因为我正在使用Maven].
>使用jasperreports_extension.properties [我遇到问题的那个!].
我一步一步地遵循this教程,但仍然没有结果没有错误没有什么.
这是我正在使用的代码:
jasperreports_extension.properties:
net.sf.jasperreports.extension.registry.factory.fonts=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.myfamily=fonts/fonts.xml
fonts.xml:
<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
<fontFamily name="Arial">
<normal><![CDATA[fonts/arial.ttf]]></normal>
<pdfEmbedded><![CDATA[true]]></pdfEmbedded>
</fontFamily>
<fontFamily name="Algerian">
<normal><![CDATA[fonts/Algerian.ttf]]></normal>
<pdfEmbedded><![CDATA[true]]></pdfEmbedded>
</fontFamily>
<fontFamily name="Bell Mt">
<normal><![CDATA[fonts/bell-mt.ttf]]></normal>
<pdfEmbedded><![CDATA[true]]></pdfEmbedded>
</fontFamily>
<fontFamily name="Savoye Std">
<normal><![CDATA[fonts/SavoyeStd.ttf]]></normal>
<pdfEmbedded><![CDATA[true]]></pdfEmbedded>
</fontFamily>
<fontFamily name="Cambria">
<normal><![CDATA[fonts/Cambria.ttf]]></normal>
<normal><![CDATA[fonts/cambriab.ttf]]></normal>
<normal><![CDATA[fonts/cambriai.ttf]]></normal>
<normal><![CDATA[fonts/cambriaz.ttf]]></normal>
<pdfEmbedded><![CDATA[true]]></pdfEmbedded>
</fontFamily>
</fontFamilies>
因为我使用spring我试过这个fonts.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.3.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.0.xsd">
<beans:bean id="Arial" class="net.sf.jasperreports.engine.fonts.SimpleFontFamily">
<beans:property name="name" value="Arial"/>
<beans:property name="normal" value="fonts/arial.ttf"/>
<beans:property name="pdfEncoding" value="Identity-H"/>
<beans:property name="pdfEmbedded" value="true"/>
</beans:bean>
<beans:bean id="Algerian" class="net.sf.jasperreports.engine.fonts.SimpleFontFamily">
<beans:property name="name" value="Algerian"/>
<beans:property name="normal" value="fonts/Algerian.ttf"/>
<beans:property name="pdfEncoding" value="Identity-H"/>
<beans:property name="pdfEmbedded" value="true"/>
</beans:bean>
<beans:bean id="BellMt" class="net.sf.jasperreports.engine.fonts.SimpleFontFamily">
<beans:property name="name" value="Bell Mt"/>
<beans:property name="normal" value="fonts/bell-mt.ttf"/>
<beans:property name="pdfEncoding" value="Identity-H"/>
<beans:property name="pdfEmbedded" value="true"/>
</beans:bean>
<beans:bean id="SavoyeStd" class="net.sf.jasperreports.engine.fonts.SimpleFontFamily">
<beans:property name="name" value="Savoye Std"/>
<beans:property name="normal" value="fonts/SavoyeStd.ttf"/>
<beans:property name="pdfEncoding" value="Identity-H"/>
<beans:property name="pdfEmbedded" value="true"/>
</beans:bean>
<beans:bean id="Cambria" class="net.sf.jasperreports.engine.fonts.SimpleFontFamily">
<beans:property name="name" value="Cambria"/>
<beans:property name="normal" value="fonts/Cambria.ttf"/>
<beans:property name="bold" value="fonts/cambriab.ttf"/>
<beans:property name="italic" value="fonts/cambriai.ttf"/>
<beans:property name="boldItalic" value="fonts/cambriaz.ttf"/>
<beans:property name="pdfEncoding" value="Identity-H"/>
<beans:property name="pdfEmbedded" value="true"/>
</beans:bean>
</beans:beans>
以及根包中字体文件夹中的字体文件.
解决方法:
非常感谢@Tunaki帮助我解决这个问题.
通过将jasperreports_extension.properties和fonts文件夹放在项目的根目录中解决了这个问题,如下所示:
标签:java,pdf,fonts,maven,jasper-reports 来源: https://codeday.me/bug/20190527/1167101.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。