java - 在 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>
解决方案
来自文档:
不支持旧版或“街头”HTML,尽管有几个不同质量的开源 Java HTML 清理器可用。我们呈现格式良好的 XML;XHTML 是一种格式良好的 XML 文档,它使用一组特殊的标记。我们不能“在野外”渲染大多数 HTML。充其量,您可以使用 TagSoup 或 JTidy 或类似库“清理”旧 HTML,并希望获得最好的结果。但是如果没有大量工作,您将无法将 Flying Saucer 用于真正的 Web 浏览器组件。但是,请注意,这不是技术限制,只是缺乏时间和资源。
TABLE 标签的“高度”属性是标准的,我猜飞碟忽略了它。
推荐阅读
- javascript - 如何将此代码从 jQuery 转换为 Vanilla Javascipt?
- javascript - 如何使用数组值评估“全有或全无条件”
- postgresql - PostgreSQL 字段类型,用于存储字符串、int 或 json
- reactjs - 为什么 this.state.text 在函数中抛出错误?
- python - 任何东西都可以进入函数吗?
- javascript - 如何将多个数据上传到 Firebase 商店而不重复
- angular - Angular 通用生产构建过程
- excel - For...Next 以 Worksheets(i).ChartObjects 失败。有什么建议么?
- php - 调用未定义的方法 Goutte\Client::setClient()
- html - HTML5 是否允许标题(如 h1)内的块级元素(如 div)?