Fonts 贾斯珀报告+;PDF生成问题

Fonts 贾斯珀报告+;PDF生成问题,fonts,pdf-generation,jasper-reports,Fonts,Pdf Generation,Jasper Reports,我正在展示一份jasper报告。现在我有了一个图标,可以得到相同的PDF格式的报告 现在,当我使用Tomcat在操作系统中部署代码时,它工作得很好,但我现在面临的问题是,我们创建了一个没有UI的Ubuntu虚拟机映像 当我试图下载PDF格式的报告时,我得到了一个错误,在网上和这里进行了广泛的搜索后,我发现字体丢失了,因此出现了这个问题 现在,我已经硬编码了字体的路径,并将true type字体也放在报表文件夹的同一路径中。但我还是犯了个错误 下面是我放在JRXML文件中的代码 <font

我正在展示一份jasper报告。现在我有了一个图标,可以得到相同的PDF格式的报告

现在,当我使用Tomcat在操作系统中部署代码时,它工作得很好,但我现在面临的问题是,我们创建了一个没有UI的Ubuntu虚拟机映像

当我试图下载PDF格式的报告时,我得到了一个错误,在网上和这里进行了广泛的搜索后,我发现字体丢失了,因此出现了这个问题

现在,我已经硬编码了字体的路径,并将true type字体也放在报表文件夹的同一路径中。但我还是犯了个错误

下面是我放在JRXML文件中的代码

<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) {

        }
    %>


如何解决此问题?

我找到了此问题的解决方案。我们需要:

  • 编辑/etc/apt/sources/list

  • 添加以下行

    德布哈代多重宇宙

    deb-src-hardy多重宇宙

    黛布·哈代更新多元宇宙

    deb src hardy更新多元宇宙

  • sudoapt获得更新

  • sudo apt get安装msttcorefonts


  • 这就解决了问题,并且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) {
    
            }
        %>