将jrxml报表转换为PDF时,字体对jvm不可用

6

我在Windows中使用eclipse。

在使用jar jasperreports-4.1.1.jar生成jrxml文件的pdf文件时,我遇到了此错误。尽管已经从我的Windows文件夹手动添加了字体文件,并向路径变量添加了字体路径,但仍然出现相同的错误。

net.sf.jasperreports.engine.JRRuntimeException: Could not load the following font : 
pdfFontName   : Arial
pdfEncoding   : Cp1252
isPdfEmbedded : false

我观察到的另一个奇怪现象是,当我尝试对 Cambria 字体使用相同的函数时,会出现不同的错误。 下面是在使用 Cambria 时出现的错误。
net.sf.jasperreports.engine.util.JRFontNotFoundException: Font 'CAMBRIA' is not available to the JVM. See the Javadoc for more details.
at net.sf.jasperreports.engine.util.JRFontUtil.checkAwtFont(JRFontUtil.java:358)
at net.sf.jasperreports.engine.util.JRStyledText.getAwtAttributedString(JRStyledText.java:226)
at net.sf.jasperreports.engine.export.AbstractTextRenderer.render(AbstractTextRenderer.java:263)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportText(JRPdfExporter.java:2026)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportElements(JRPdfExporter.java:729)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportFrame(JRPdfExporter.java:2526)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportElements(JRPdfExporter.java:733)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportFrame(JRPdfExporter.java:2526)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportElements(JRPdfExporter.java:733)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportPage(JRPdfExporter.java:689)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportReportToStream(JRPdfExporter.java:582)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportReport(JRPdfExporter.java:376)
at net.sf.jasperreports.engine.JasperExportManager.exportReportToPdfFile(JasperExportManager.java:122)
at main.CopyOfTable.runReport(CopyOfTable.java:60)
at main.CopyOfTable.main(CopyOfTable.java:100)
3个回答

5
希望这可以帮到您:
  1. 将您的字体定义为“字体扩展”。这需要创建两个文件:jasperreports_extension.properties和fonts.xml。在您可以从http://community.jaspersoft.com/project/jasperreports-library/releases下载的JasperReports软件包中的demo/fonts目录中查看如何完成此操作。

  2. 将您的字体和字体扩展打包到一个JAR文件中,并将其放置在类路径上。

这适用于TrueType和OpenType字体。

还有:

请参见Teodor的第一条评论此处

本站上的许多有用答案之一是此处

祝您好运。


我已经下载了jasperReport.5.0.0.jar并将它添加到我的classpath中,但问题仍然存在。经过仔细观察,我发现jar文件中没有fonts.xml文件,因此我手动将其添加到jar文件中并尝试,但仍然没有成功。 - user1859459
你需要下载jasperreports-5.0.0-project.zip,而不是jar文件。该项目包含演示/字体目录,展示了正确的方法。如果您遵循这里的示例和文档(http://jasperreports.sourceforge.net/sample.reference/fonts/index.html#fontextensions),应该就没问题了。 - glenn380

0

您会遇到以下类型的错误

net.sf.jasperreports.engine.JRRuntimeException: 无法加载以下字体

您必须检查Tomcat目录中的临时文件夹。如果您找不到任何临时文件夹,请按照以下方式创建临时文件夹。

enter image description here


0

我解决了这个问题,只需将缺失的字体添加到操作系统中即可。在我的情况下,是Windows 7。我的报告没有使用缺失的字体,即Calibri Light,在其他环境中始终正常工作。


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