2010-07-10 6 views
0

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

Теперь, когда я разворачиваю код в ОС с помощью Tomcat, он отлично работает, но проблема, с которой я сейчас сталкиваюсь, заключается в том, что мы создали VM-образ 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); 

И вот мой код генерации кода

<%@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. Редактировать/и т.д./кв/источники/список

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

    DEB http://us.archive.ubuntu.com/ubuntu/ выносливы мультивселенной

    Деб-Src http://us.archive.ubuntu.com/ubuntu/ выносливы мультивселенной

    deb http://us.archive.ubuntu.com/ubuntu/ hardy-updates multiverse

    Деб-Src http://us.archive.ubuntu.com/ubuntu/ выносливое-обновление мультивселенного

  3. Суды APT-получить обновление

  4. Суды APT-получить установку msttcorefonts

Это решает проблему и PDF также получать сгенерированную ,

1

Чтобы отправить необходимые шрифты с помощью шаблонов отчетов при их развертывании в целевом приложении, вы получите need to use the font extensions.

С уважением,

Жильберту

Смежные вопросы