我有一个我正在展示的碧玉报道。现在我有了一个图标来获取PDF格式的相同报告。
现在,当我使用Tomcat在操作系统中部署代码时,它工作正常,但我现在面临的问题是,我们创建了一个没有UI的Ubuntu虚拟机映像。
当我尝试以PDF格式下载报告时,我在网上进行了大量搜索后发现错误,在这里,我发现字体丢失了,因此出现了这个问题。
现在我已经对字体的路径进行了硬编码,并将真实字体也放在报告文件夹的同一路径中。但我仍然收到错误。
以下是我在JRXML文件中添加的代码
<font size="20" isBold="false" fontName="Verdana" pdfFontName="/var/lib/tomcat6/webapps/WallCloud/jsp/dashboard/reports/Helvetica.ttf" isBold="false" isPdfEmbedded ="true"/>
这是我得到的错误
javax.servlet.ServletException: org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
这是在
行JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, conn);
这是我的pdf生成代码
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.sql.Connection" %>
<%@page import="net.sf.jasperreports.view.JasperViewer" %>
<%@page import="net.sf.jasperreports.engine.xml.JRXmlLoader" %>
<%@page import="net.sf.jasperreports.engine.JasperCompileManager" %>
<%@page import="net.sf.jasperreports.engine.JasperFillManager" %>
<%@page import="net.sf.jasperreports.engine.JasperPrint" %>
<%@page import="net.sf.jasperreports.engine.design.JasperDesign" %>
<%@page import="net.sf.jasperreports.engine.JasperReport" %>
<%@page import="java.io.ByteArrayOutputStream" %>
<%@page import="com.abc.xyz.utils.DBConnection" %>
<%@page import="org.apache.commons.collections.*" %>
<%@page import="org.apache.jasper.JasperException" %>
<form name='frmReport' method='POST'>
<%
try {
Connection conn = null;
DBConnection dbConn = new DBConnection();
conn = dbConn.getSimpleConnection();
String path = getServletContext().getRealPath("/")+"/jsp/reports/Report.jrxml";
JasperDesign jasperD = JRXmlLoader.load(path);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperD);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "inline; filename=\"Report.pdf\"");
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, conn);
net.sf.jasperreports.engine.JasperExportManager.exportReportToPdfStream(jasperPrint, baos);
response.setContentLength(baos.size());
ServletOutputStream out1 = response.getOutputStream();
baos.writeTo(out1);
out1.flush();
conn.close();
} catch (Exception se) {
}
%>
如何解决此问题?
答案 0 :(得分:1)
答案 1 :(得分:0)
我找到了解决这个问题的方法。我们需要以下内容:
编辑/ etc / apt / sources / list
添加以下行
deb http://us.archive.ubuntu.com/ubuntu/ hardy multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ hardy multiverse
deb http://us.archive.ubuntu.com/ubuntu/ hardy-updates multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ hardy-updates multiverse
sudo apt-get update
sudo apt-get install msttcorefonts
这解决了问题,PDF也在生成。