Jasper Reports + проблема генерации PDF - PullRequest
0 голосов
/ 10 июля 2010

У меня есть отчет о яшме, который я показываю.Теперь у меня есть значок для получения того же отчета в формате PDF.

Теперь, когда я внедряю код в ОС с Tomcat, он работает нормально, но проблема, с которой я сейчас сталкиваюсь, заключается в том, что мы создали виртуальную машинуОбраз Ubuntu без UI.

И когда я пытаюсь загрузить отчет в формате 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) {

        }
    %>

Как мне решить эту проблему?

Ответы [ 2 ]

1 голос
/ 18 октября 2011

Чтобы отправить необходимые шрифты с шаблонами отчетов при их развертывании в целевом приложении, вам необходимо использовать расширения шрифтов .

С уважением,

Гилберто

0 голосов
/ 16 июля 2010

Я нашел решение этой проблемы.Нам нужно следующее:

  1. Редактировать / etc / apt / sources / list

  2. добавить следующую строку

    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-обновления Multiverse

    Deb-Srchttp://us.archive.ubuntu.com/ubuntu/ hardy-updates multiverse

  3. sudo apt-get update

  4. sudo apt-get install msttcorefonts

Это решает проблему, и PDF также генерируется.

...