How to add external CSS while generating PDF?

后端 未结 4 1513
广开言路
广开言路 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);  
    
    0 讨论(0)
  • 2021-01-22 15:19

    Change content type to

    response.setContentType("application/pdf");
    
    0 讨论(0)
  • 2021-01-22 15:20

    You may try this code reference.

    $html .= '<style>'.file_get_contents(_BASE_PATH.'stylesheet.css').'</style>';
    
    0 讨论(0)
  • 2021-01-22 15:32

    i am not sure in java how can you use but in c# you can add external style sheet code or syntax by this code:-

    StyleSheet css = new StyleSheet();
        css.LoadTagStyle("body", "face", "Garamond");
        css.LoadTagStyle("body", "encoding", "Identity-H");
        css.LoadTagStyle("body", "size", "12pt");
    

    may be this helps you

    Regards, vinit

    0 讨论(0)
提交回复
热议问题