我在我的 kotlin 代码中将 html 转换为 pdf。为此,我使用了 fly-saucer-pdf-openpdf。但是,结果 pdf 中没有表格边框,并且样式显示为纯文本字符串。这是生成的html页面:
<html>
<head></head>
<body>
<style>table, th, td {border: 1px solid black;border-collapse: collapse;}</style>
<h1>Facture VAT 131316</h1>
<p>Vendor: Green family</p>
<p>Order type: delivery</p>
<p>Delivery time: null</p>
<p>Total price: 32</p>
<p>Client Bob</p>
<p>Payment method CASH</p>
<table>
<thead>
<tr>
<td>Item</td>
<td>Currency</td>
<td>Price</td>
<td>Vat rate %</td>
<td>Vat</td>
<td>Total</td>
</tr>
</thead>
<tbody>
<tr>
<td>First dish</td>
<td>GBP</td>
<td>20</td>
<td>0</td>
<td>0</td>
<td>20</td>
</tr>
<tr>
<td>Second dish</td>
<td>GBP</td>
<td>12</td>
<td>0</td>
<td>0</td>
<td>12</td>
</tr>
</tbody>
</border>
</table>
<p>Delivery: 10 GBP</p>
<p>Total: 32 GBP</p>
</body>
</html>
所以这里是为表格添加边框的样式。当我将其转换为 pdf 时,我看到如下内容:
这是我的 html 到 pdf 代码片段:
val document: Document = Jsoup.parse(html, "UTF-8")
document.outputSettings().syntax(Document.OutputSettings.Syntax.xml);
val byteArrayOs = ByteArrayOutputStream()
val renderer = ITextRenderer()
renderer.setDocumentFromString(document.html())
renderer.layout()
renderer.createPDF(byteArrayOs)
所以问题是我应该如何修改我的 html(实际上是由kotlinx.html以编程方式生成的)以正确显示边框。