How to add external CSS while generating PDF?

后端 未结 4 1515
广开言路
广开言路 2021-01-22 14:32

Currently i am using following code to generate PDF in a JSP file:

response.setContentType(\"application/force-download\");                                               


        
4条回答
  •  醉话见心
    2021-01-22 15:17

    Please take a look at the ParseHtmlTable1 example. In this example, we have HTML stored in a StringBuilder object and some CSS stored in a String. In my example, I convert the sb object and the CSS object to an InputStream. If you have files with the HTML and the CSS, you could easily use a FileInputStream.

    Once you have an InputStream for the HTML and the CSS, you can use this code:

    // CSS
    CSSResolver cssResolver = new StyleAttrCSSResolver();
    CssFile cssFile = XMLWorkerHelper.getCSS(new ByteArrayInputStream(CSS.getBytes()));
    cssResolver.addCss(cssFile);
    
    // HTML
    HtmlPipelineContext htmlContext = new HtmlPipelineContext(null);
    htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());
    
    // Pipelines
    PdfWriterPipeline pdf = new PdfWriterPipeline(document, writer);
    HtmlPipeline html = new HtmlPipeline(htmlContext, pdf);
    CssResolverPipeline css = new CssResolverPipeline(cssResolver, html);
    
    // XML Worker
    XMLWorker worker = new XMLWorker(css, true);
    XMLParser p = new XMLParser(worker);
    p.parse(new ByteArrayInputStream(sb.toString().getBytes()));
    

    Or, if you don't like all that code:

    ByteArrayInputStream bis = new ByteArrayInputStream(htmlSource.toString().getBytes());  
    ByteArrayInputStream cis = new ByteArrayInputStream(cssSource.toString().getBytes());
    XMLWorkerHelper.getInstance().parseXHtml(writer, document, bis, cis);  
    

提交回复
热议问题