Eclipse Can';t从xhtml生成pdf(xhtmlrenderer-1.0.0.jar)

Eclipse Can';t从xhtml生成pdf(xhtmlrenderer-1.0.0.jar),eclipse,maven,jsf,primefaces,itext,Eclipse,Maven,Jsf,Primefaces,Itext,我想用一个命令按钮从xhtml页面生成一个pdf,但结果是浏览器中出现一个黑色的空白页面,我在网上搜索过,但没有找到像我这样的页面。 我正在使用:xhtmlrenderer-1.0.0.jar-Maven projet PrintBean.java package com.ismo.gestionabsence.presentation; import java.io.File; import java.io.OutputStream; import java.io.Serializa

我想用一个命令按钮从xhtml页面生成一个pdf,但结果是浏览器中出现一个黑色的空白页面,我在网上搜索过,但没有找到像我这样的页面。 我正在使用:xhtmlrenderer-1.0.0.jar-Maven projet

PrintBean.java

    package com.ismo.gestionabsence.presentation;

import java.io.File;
import java.io.OutputStream;
import java.io.Serializable;
import java.net.URL;
import java.util.Date;

import javax.annotation.PostConstruct;
//import javax.enterprise.context.SessionScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; 

import org.docx4j.org.xhtmlrenderer.pdf.ITextRenderer;

@ManagedBean(name = "printBean")
@SessionScoped
public class PrintBean implements Serializable  {



    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    private int     code;
    private String client;


    public PrintBean()
    {}

        @PostConstruct
        public void init()
        {

            code=1;
            client="teste de client;";
        }








    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }


    public String getClient() {
        return client;
    }

    public void setClient(String client) {
        this.client = client;
    }

    public void createPDF()  {

        System.out.println("in");
        FacesContext facesContext = FacesContext.getCurrentInstance();
        ExternalContext externalContext = facesContext.getExternalContext();
        HttpSession session = (HttpSession) externalContext.getSession(true);
        String url = "http://localhost:8080/simple-webapp/faces/print.xhtml;jsessionid="+session.getId()+"?pdf=true";
        System.out.println("url");
        try {

            ITextRenderer renderer = new ITextRenderer();
            renderer.setDocument(new URL(url).toString());

        //  renderer.setDocument(new File(url));
            renderer.layout();
            HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();
            response.reset();
            response.setContentType("application/pdf");
            response.setHeader("content-Disposition", "inline: filename=\"facture.pdf\"");
            OutputStream outputStream = response.getOutputStream();
            renderer.createPDF(outputStream);

        } catch (Exception e) {
            e.printStackTrace();
        }
        facesContext.responseComplete();
    }
    public void test()
    {System.out.println("test");}

}
test.xhtml

<!DOCTYPE html>
<html  xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://xmlns.jcp.org/jsf/core"
      xmlns:p="http://primefaces.org/ui"
            xmlns:b="http://bootsfaces.net/ui"
>
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>



<title>test</title>
</h:head>
<h:body>
<h:form id="form" >
button <h:commandButton value="print" action="#{printBean.createPDF}"></h:commandButton>
</h:form>



</html>
如果有人能解释如何解决这个问题,我将不胜感激!! 你好,请原谅我的英语!!
一幅图像进一步解释了这种情况:

这不是您使用iText开具发票的方式。飞碟不支持PDF/A、可访问性,。。。阅读以了解如何使用iText。如果有人已经完成了从A到Z的所有工作,你为什么要重新发明轮子?@BrunoLowagie:为了节省成本?客户希望支付越来越少的费用,并能够提供可行的服务,成本必须低。几年前,我们要求报价(顺便说一句,pdfHTML还没有提供),我们必须支付的每PDF的价格简直太高了。当时没有商业案例。对我来说(实际上没有PDF/A),使用旧iText的XHTMLender在技术上仍然可以正常工作。@Kukeltje如果你想要永久许可证,低容量的成本很高。如果您按次使用付费,则每个文档的成本为美分。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html">
<head>
<meta charset="UTF-8" />
<title>Facture </title>
<link
    href="css/facture.css"  rel="stylesheet" type="text/css" />
</head>
<body>
    <header>
    <h1>
        FACTURE
    </h1>
    <h3>Facture</h3>
    </header>
    <table>
        <thead>
            <tr>

                <th>Client</th>

            </tr>
        </thead>
        <tbody>
            <tr>
                <td><h:outputText value="CodeL : #{printBean.code}"></h:outputText></td>
                <td><h:outputText value="#{printBean.client}"></h:outputText></td>
            </tr>
        </tbody>
        <tfoot>
            <tr>
                <td colspan="3"></td>
                <td>Total: </td>
            </tr>
        </tfoot>
    </table>
    <footer>

    <p>
        Faculté des Sciences  <a rel="nofollow" 
            href="mailto:vdap.vv@gmail.com">Courriel: vdap.vv@gmail.com </a>
    </p>
    </footer>
</body>
</html>
WARNING: Flying Saucer: No configuration files found in classpath using URL: xhtmlrenderer.conf, resorting to hard-coded fallback properties.
java.io.IOException: Stream closed
    at java.io.BufferedInputStream.getInIfOpen(Unknown Source)
    at java.io.BufferedInputStream.read1(Unknown Source)
    at java.io.BufferedInputStream.read(Unknown Source)
    at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
    at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
    at sun.nio.cs.StreamDecoder.read(Unknown Source)
    at java.io.InputStreamReader.read(Unknown Source)
    at org.docx4j.org.xhtmlrenderer.css.parser.Lexer.zzRefill(Lexer.java:1634)
    at org.docx4j.org.xhtmlrenderer.css.parser.Lexer.yylex(Lexer.java:1865)
    at org.docx4j.org.xhtmlrenderer.css.parser.CSSParser.next(CSSParser.java:1807)
    at org.docx4j.org.xhtmlrenderer.css.parser.CSSParser.la(CSSParser.java:1819)
    at org.docx4j.org.xhtmlrenderer.css.parser.CSSParser.stylesheet(CSSParser.java:159)
    at org.docx4j.org.xhtmlrenderer.css.parser.CSSParser.parseStylesheet(CSSParser.java:89)
    at org.docx4j.org.xhtmlrenderer.context.StylesheetFactoryImpl.parse(StylesheetFactoryImpl.java:78)
    at org.docx4j.org.xhtmlrenderer.context.StylesheetFactoryImpl.parse(StylesheetFactoryImpl.java:95)
    at org.docx4j.org.xhtmlrenderer.context.StylesheetFactoryImpl.getStylesheet(StylesheetFactoryImpl.java:174)
    at org.docx4j.org.xhtmlrenderer.context.StyleReference.readAndParseAll(StyleReference.java:123)
    at org.docx4j.org.xhtmlrenderer.context.StyleReference.setDocumentContext(StyleReference.java:107)
    at org.docx4j.org.xhtmlrenderer.pdf.ITextRenderer.setDocument(ITextRenderer.java:182)
    at org.docx4j.org.xhtmlrenderer.pdf.ITextRenderer.setDocument(ITextRenderer.java:145)
    at org.docx4j.org.xhtmlrenderer.pdf.ITextRenderer.setDocument(ITextRenderer.java:141)
    at com.ismo.gestionabsence.presentation.PrintBean.createPDF(PrintBean.java:81)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.el.parser.AstValue.invoke(AstValue.java:247)
    at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)
    at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
    at javax.faces.component.UICommand.broadcast(UICommand.java:315)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)