【发布时间】:2016-10-11 12:59:30
【问题描述】:
我有一个应用程序,我使用 jasper 报告库从在线生成报告。我使用除 Helvetica 以外的任何字体来生成 pdf 报告都是一个问题。我无法检测到字体的引用/加载位置。对于 Helvetica 或 Times-Roman,我没有任何明确的类。
以下是抛出的错误:
net.sf.jasperreports.engine.JRRuntimeException: Could not load the following font :
pdfFontName : Times-Roman
pdfEncoding : Identity-H
isPdfEmbedded : false
at net.sf.jasperreports.engine.export.JRPdfExporter.getFont(JRPdfExporter.java:2036) ~[jasperreports-5.5.0.jar:5.5.0]
at net.sf.jasperreports.engine.export.JRPdfExporter.getChunk(JRPdfExporter.java:1818) ~[jasperreports-5.5.0.jar:5.5.0]
at net.sf.jasperreports.engine.export.JRPdfExporter.getPhrase(JRPdfExporter.java:1787) ~[jasperreports-5.5.0.jar:5.5.0]
at net.sf.jasperreports.engine.export.SimplePdfTextRenderer.getPhrase(SimplePdfTextRenderer.java:89) ~[jasperreports-5.5.0.jar:5.5.0]
at net.sf.jasperreports.engine.export.SimplePdfTextRenderer.render(SimplePdfTextRenderer.java:99) ~[jasperreports-5.5.0.jar:5.5.0]
at net.sf.jasperreports.engine.export.JRPdfExporter.exportText(JRPdfExporter.java:2158) ~[jasperreports-5.5.0.jar:5.5.0]
at net.sf.jasperreports.engine.export.JRPdfExporter.exportElements(JRPdfExporter.java:861) ~[jasperreports-5.5.0.jar:5.5.0]
at net.sf.jasperreports.engine.export.JRPdfExporter.exportPage(JRPdfExporter.java:821) ~[jasperreports-5.5.0.jar:5.5.0]
at net.sf.jasperreports.engine.export.JRPdfExporter.exportReportToStream(JRPdfExporter.java:698) ~[jasperreports-5.5.0.jar:5.5.0]
at net.sf.jasperreports.engine.export.JRPdfExporter.exportReport(JRPdfExporter.java:420) ~[jasperreports-5.5.0.jar:5.5.0]
但是对于同一份报告,如果我将 PDF 字体名称命名为 Helvetica,则一切正常。
谁能帮我理解这是如何工作的?另外,如果我想添加一些新字体,我在哪里可以添加它?
按照下面链接中提到的在jasper fonts jar中添加新字体的步骤
http://www.codesuggestions.com/java/jasper-reports/adding-custom-fonts-t...
之前的错误消失了。弹出一个新错误。
Caused by: java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser
at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:121) ~[jasperreports-5.5.0.jar:5.5.0]
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:88) ~[jasperreports-5.5.0.jar:5.5.0]
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:103) ~[jasperreports-5.5.0.jar:5.5.0]
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:61) ~[jasperreports-5.5.0.jar:5.5.0]
at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:179) ~[jasperreports-5.5.0.jar:5.5.0]
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:81) ~[jasperreports-5.5.0.jar:5.5.0]
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:446) ~[jasperreports-5.5.0.jar:5.5.0]
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:276) ~[jasperreports-5.5.0.jar:5.5.0]
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:745) ~[jasperreports-5.5.0.jar:5.5.0]
jasperreports-5.5.0.jar 存在于应用程序的类路径中,仍然面临此错误。
【问题讨论】:
-
要添加字体,您需要使用字体扩展,请参阅stackoverflow.com/questions/33940126/…
-
感谢皮特的回复。我已经尝试了将字体的 .ttf 导出为 jar 并将其添加到类路径中的上述方法。但是,它不起作用,我仍然得到 Caused by: java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser 错误。我应该为从 iReports 创建的 jar 提供一个特定的名称,或者任何名称都可以吗?
-
你使用的是什么字体?确保它与 itext 库 stackoverflow.com/questions/35127956/… 兼容。 java.lang.NoClassDefFoundError,说你缺少一个库,但我需要更多的堆栈跟踪,因为在当前我看不到哪个
-
我使用的是 arial 字体。在 iReports 中使用 arial 生成 pdf 报告不是问题。问题是当我将它添加到我的应用程序时。
-
所以你在类路径中缺少字体扩展或其他库,哪个库?,我需要更多的堆栈跟踪来理解edit 问题并ping 我
标签: pdf fonts jasper-reports