net.sf.jasperreports.engine.JRRuntimeException:java.io.IOException:无法读取字体数据
我试图通过JasperReport创建PDF报告,但读取字体数据时存在一个问题。 我有jasperreports_extension.properties&类路径中的相关TTF文件。 以下是错误:net.sf.jasperreports.engine.JRRuntimeException:java.io.IOException:无法读取字体数据,java,fonts,jasper-reports,Java,Fonts,Jasper Reports,我试图通过JasperReport创建PDF报告,但读取字体数据时存在一个问题。 我有jasperreports_extension.properties&类路径中的相关TTF文件。 以下是错误: java.io.IOException: Problem reading font data. java.awt.Font.createFont(Font.java:924) net.sf.jasperreports.engine.fonts.SimpleFontFace.<in
java.io.IOException: Problem reading font data.
java.awt.Font.createFont(Font.java:924)
net.sf.jasperreports.engine.fonts.SimpleFontFace.<init>(SimpleFontFace.java:69)
net.sf.jasperreports.engine.fonts.SimpleFontFamily.createFontFace(SimpleFontFamily.java:316)
net.sf.jasperreports.engine.fonts.SimpleFontFamily.setNormal(SimpleFontFamily.java:85)
net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.parseFontFamily(SimpleFontExtensionHelper.java:243)
net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.parseFontFamilies(SimpleFontExtensionHelper.java:214)
net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.loadFontFamilies(SimpleFontExtensionHelper.java:183)
net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.loadFontFamilies(SimpleFontExtensionHelper.java:152)
net.sf.jasperreports.engine.fonts.FontExtensionsRegistry.getExtensions(FontExtensionsRegistry.java:55)
net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getExtensions(DefaultExtensionsRegistry.java:110)
net.sf.jasperreports.engine.util.JRStyledTextParser.<clinit>(JRStyledTextParser.java:83)
net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:121)
net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:77)
net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:87)
net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:57)
net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:142)
net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:78)
net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624)
org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsView.fillReport(AbstractJasperReportsView.java:666)
org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsView.renderMergedOutputModel(AbstractJasperReportsView.java:559)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1063)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:801)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
java.io.IOException:读取字体数据时出现问题。
java.awt.Font.createFont(Font.java:924)
net.sf.jasperreports.engine.fonts.SimpleFontFace.(SimpleFontFace.java:69)
net.sf.jasperreports.engine.fonts.SimpleFontFamily.createFontFace(SimpleFontFamily.java:316)
net.sf.jasperreports.engine.fonts.SimpleFontFamily.setNormal(SimpleFontFamily.java:85)
net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.parseFontFamily(SimpleFontExtensionHelper.java:243)
net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.parseFontFamilies(SimpleFontExtensionHelper.java:214)
net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.loadFontFamilies(SimpleFontExtensionHelper.java:183)
net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.loadFontFamilies(SimpleFontExtensionHelper.java:152)
net.sf.jasperreports.engine.fonts.FontExtensionsRegistry.getExtensions(FontExtensionsRegistry.java:55)
net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getExtensions(DefaultExtensionsRegistry.java:110)
net.sf.jasperreports.engine.util.JRStyledTextParser。(JRStyledTextParser.java:83)
net.sf.jasperreports.engine.fill.JRBaseFiller.(JRBaseFiller.java:121)
net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:77)
net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:87)
net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:57)
net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:142)
net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:78)
net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624)
org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsView.fillReport(AbstractJasperReportsView.java:666)
org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsView.renderMergedOutputModel(AbstractJasperReportsView.java:559)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1063)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:801)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
javaservlet.http.HttpServlet.service(HttpServlet.java:690)
javaservlet.http.HttpServlet.service(HttpServlet.java:803)
谁能帮我
谢谢 更改tomcat临时目录的权限,以允许tomcat/jasper对其进行写入
请参阅:在我的例子中,我通过在Tomcat文件夹中手动创建临时目录并更改权限解决了这个问题
使用管理员权限运行tomcat/application server也会有所帮助。我面临同样的问题,根本原因是从tomcat目录中删除了temp文件夹
解决方案是,当我在tomcat中创建临时文件夹时,这个问题就解决了。`在类路径中有jasperreports\u extension.properties和相关的TTF文件。`-你用字体创建jar了吗?查看主题引用自示例:
一旦您拥有TTF文件、jasperreports_extension.properties和fonts.xml文件,您就可以将它们打包到一个JAR文件中,然后将JAR放入应用程序的类路径中,以便在应用程序可能运行的任何地方都能为您的报告提供新字体。
是。我已经用iReport工具创建了Jar,并将其放在类路径中。同样的错误出现在您使用的JasperReports库的哪个版本?我们使用了版本4.5.1My tomcat was se来使用c:\windows。也许更改temp dir(java.io.tmpdir属性)更好。