首页 > 解决方案 > 在 Java 中从 html 生成 pdf 时出现错误的渲染

问题描述

我正在尝试将简单的 html 转换为 pdf,但我的浏览器中的样式与 pdf 中的样式不同。我正在使用飞碟-pdf v9.1.18。你知道为什么吗?

这是它在网络浏览器上的外观以及在生成的 pdf 中的外观: https ://i.stack.imgur.com/MB7DB.jpg

这是我的简单html模板:

<html>

<head>
    <style>
        .aligned {
            vertical-align: bottom;
        }
        
        .colored {
            color: red;
            font-weight: bold;
        }
    </style>
</head>

<body>
    <table border="1" width="300px" height="300px">
        <tr>
            <td>1</td>
            <td>2</td>
        </tr>
        <tr>
            <td>3</td>
            <td class="colored">4</td>
        </tr>
        <tr>
            <td>5</td>
            <td class="aligned">6</td>
        </tr>
    </table>
</body>

</html>

标签: javaflying-saucer

解决方案


来自文档:

不支持旧版或“街头”HTML,尽管有几个不同质量的开源 Java HTML 清理器可用。我们呈现格式良好的 XML;XHTML 是一种格式良好的 XML 文档,它使用一组特殊的标记。我们不能“在野外”渲染大多数 HTML。充其量,您可以使用 TagSoup 或 JTidy 或类似库“清理”旧 HTML,并希望获得最好的结果。但是如果没有大量工作,您将无法将 Flying Saucer 用于真正的 Web 浏览器组件。但是,请注意,这不是技术限制,只是缺乏时间和资源。

TABLE 标签的“高度”属性是标准的,我猜飞碟忽略了它。

参见例如在 HTML 中设置表格的高度没有效果


推荐阅读