【问题标题】:HTML to PDF using Flying Saucer: Internal CSS showing in PDF pageHTML to PDF using Flying Saucer:在 PDF 页面中显示的内部 CSS
【发布时间】:2015-06-29 06:36:49
【问题描述】:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{
    try {
        StringBuffer buffer = new StringBuffer();
        buffer.append("<html>");
        buffer.append("<head>");
        buffer.append("<style type='text/css'>");
        buffer.append("@page {background-color: #f0f0f0;}");
        buffer.append("</style>");
        buffer.append("</head>");
        buffer.append("<body>");
        buffer.append("<h2>Hello</h2>");
        buffer.append("</body>");
        buffer.append("</html>");
        DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
        Document doc = docBuilder.parse(new StringBufferInputStream(buffer.toString()));
        OutputStream os = response.getOutputStream();

        ITextRenderer renderer = new ITextRenderer();
        renderer.setDocument(doc, null);
        renderer.layout();
        renderer.createPDF(os);

        os.close();
        }

当它显示 pdf 时会发生什么,css 正常工作并显示灰色背景,但是,它显示以下文本:@page {background-color: #f0f0f0;}你好。如何让样式文本停止显示在 pdf 中?

【问题讨论】:

  • 如果将@page {background-color: #f0f0f0;} 替换为&lt;!-- @page {background-color: #f0f0f0;} --&gt; 会怎样?
  • 成功了,谢谢。如果您想将其作为答案,我将其标记为正确。

标签: java servlets web-applications itext flying-saucer


【解决方案1】:

如果你替换:

@page {background-color: #f0f0f0;}

通过

<!--
    @page {background-color: #f0f0f0;}
-->

那么&lt;style&gt; 标签会识别该样式,但该样式不会“算作”HTML,因为我们已将它放在注释中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-17
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多