Fonts 贾斯珀报告+;PDF生成问题
我正在展示一份jasper报告。现在我有了一个图标,可以得到相同的PDF格式的报告 现在,当我使用Tomcat在操作系统中部署代码时,它工作得很好,但我现在面临的问题是,我们创建了一个没有UI的Ubuntu虚拟机映像 当我试图下载PDF格式的报告时,我得到了一个错误,在网上和这里进行了广泛的搜索后,我发现字体丢失了,因此出现了这个问题 现在,我已经硬编码了字体的路径,并将true type字体也放在报表文件夹的同一路径中。但我还是犯了个错误 下面是我放在JRXML文件中的代码Fonts 贾斯珀报告+;PDF生成问题,fonts,pdf-generation,jasper-reports,Fonts,Pdf Generation,Jasper Reports,我正在展示一份jasper报告。现在我有了一个图标,可以得到相同的PDF格式的报告 现在,当我使用Tomcat在操作系统中部署代码时,它工作得很好,但我现在面临的问题是,我们创建了一个没有UI的Ubuntu虚拟机映像 当我试图下载PDF格式的报告时,我得到了一个错误,在网上和这里进行了广泛的搜索后,我发现字体丢失了,因此出现了这个问题 现在,我已经硬编码了字体的路径,并将true type字体也放在报表文件夹的同一路径中。但我还是犯了个错误 下面是我放在JRXML文件中的代码 <font
<font size="20" isBold="false" fontName="Verdana" pdfFontName="/var/lib/tomcat6/webapps/WallCloud/jsp/dashboard/reports/Helvetica.ttf" isBold="false" isPdfEmbedded ="true"/>
这是在线上的
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) {
}
%>
如何解决此问题?我找到了此问题的解决方案。我们需要:
这就解决了问题,并且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) {
}
%>