Moin ihrs,
ich brauche eine Möglichkeit PDF's aus einer XHTML-Datei zu generieren. Ich habe schon versucht mit Flying Saucer und iText zu arbeiten. Das sieht derzeit so aus:
Problem an der ganzen sache ist, dass ich dauernd eine Exception vom XMLParser bekomme mit der ich so garnichts anfangen kann.
Der Pfad zur Datei ist richtig und einiges an Google-Anfragen brachte mich auch nicht weiter. Die Syntay innerhalb der Datei ist auch ok, ich bleib dort einfach hängen.
Hat dementsprechend jemand eine Ahnung was dort falsch läuft oder eine Alternative zu meinem Ansatz?
LG
David
ich brauche eine Möglichkeit PDF's aus einer XHTML-Datei zu generieren. Ich habe schon versucht mit Flying Saucer und iText zu arbeiten. Das sieht derzeit so aus:
Java:
package de.klientsoftware.statistik;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.lowagie.text.DocumentException;
import java.io.File;
import java.io.OutputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.xhtmlrenderer.pdf.ITextRenderer;
/**
*
* @author david
*/
public class ExportToPDFServlet extends HttpServlet {
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
OutputStream out = response.getOutputStream();
String filename = request.getPathInfo().substring(1);
String inputFile = request.getServletContext().getRealPath("/faces/user/"+filename);
String url = new File(inputFile).toURI().toURL().toString();
System.out.println(url);
try {
response.setContentType("application/pdf");
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(url);
renderer.layout();
renderer.createPDF(out);
}catch(DocumentException dexp){
Logger.getLogger(ExportToPDFServlet.class.getName()).log(Level.SEVERE, null, dexp);
}finally {
out.close();
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
Problem an der ganzen sache ist, dass ich dauernd eine Exception vom XMLParser bekomme mit der ich so garnichts anfangen kann.
Code:
StandardWrapperValve[ExportToPDFServlet]: PWC1406: Servlet.service() for servlet ExportToPDFServlet threw exception
org.xhtmlrenderer.util.XRRuntimeException: Can't load the XML resource (using TRaX transformer). java.io.IOException: Stream closed
Der Pfad zur Datei ist richtig und einiges an Google-Anfragen brachte mich auch nicht weiter. Die Syntay innerhalb der Datei ist auch ok, ich bleib dort einfach hängen.
Hat dementsprechend jemand eine Ahnung was dort falsch läuft oder eine Alternative zu meinem Ansatz?
LG
David