0

我在我的 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以编程方式生成的)以正确显示边框。

4

0 回答 0