从Java中的html生成pdf时渲染错误

问题描述 投票:2回答:1

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

这是它在Web浏览器上的外观以及它在生成的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>
java flying-saucer
1个回答
1
投票

来自docs:

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

TABLE标签的“height”属性是标准的,我猜飞碟正在忽略它。

参见例如Setting the height of a table in HTML has no effect

© www.soinside.com 2019 - 2024. All rights reserved.