使用 XMLWorker 和 itext 解析 html 时,如何将单元格间距添加到 pdftable

Posted

技术标签:

【中文标题】使用 XMLWorker 和 itext 解析 html 时,如何将单元格间距添加到 pdftable【英文标题】:how can I add cellspacing to pdftable when parsing html using XMLWorker and itext 【发布时间】:2014-12-29 04:22:01 【问题描述】:

我正在使用 XMLWorker 和 itext 将 html 转换为 pdf 。 我的 html 有一个表格,我需要将其设置为 cellspacing =0 cellpadding=0 。 有人知道怎么做吗?

在html中我看到我可以通过设置样式来替换它:

border-collapse: collapse; border-spacing: 0px ; border : 0; padding : 0;

谢谢 塔米

【问题讨论】:

【参考方案1】:

我已经尝试过使用您建议的 CSS 进行的操作,它对我有用:

你可以在这里找到我的测试:ParseHtmlTable5

这是我的 HTML(包括 CSS):table3_css.html

<html>
<head>
<style>
    table, td 
        border: 1px solid green;
        border-spacing: 0px;
        padding: 0px;
    
</style>
</head>
<body>
<table class='test'>
  <tr>
    <th>Firstname</th>
    <th>Lastname</th>
    <th>Savings</th>
  </tr>
  <tr>
    <td>Peter</td>
    <td>Griffin</td>
    <td>$100</td>
  </tr>
  <tr>
    <td>Lois</td>
    <td>Griffin</td>
    <td>$150</td>
  </tr>
  <tr>
    <td>Joe</td>
    <td>Swanson</td>
    <td>$300</td>
  </tr>
  <tr>
    <td>Cleveland</td>
    <td>Brown</td>
    <td>$250</td>
</tr>
</table>
</body>
</html>

我建议您将您的 HTML 与我的 HTML 进行比较,以找出您做错了什么。 您还应该使用最新版本的 XML Worker 和 iText(Sharp),因为我们在最新版本中显着改进了 HTML 解析。

请注意,我定义了一个 1px 的实心绿色边框,以证明单元格之间没有填充和间距。如果您像这样更改 CSS:

<style>
    table, td 
        border: 0px;
        border-spacing: 0px;
        padding: 0px;
    
</style>

你会得到一个没有边框的(丑陋的)表格版本,没有单元格之间的间距,也没有单元格内的填充。

【讨论】:

我试过你的代码,它是正确的,我的问题可能与 rowSpan 和 colspan 有关。解析器是否支持这些属性? 如果我的回答正确,请采纳。不要使用 cmets 添加新问题。在问问题是否有效之前,请尝试。如果它不起作用,请搜索 ***。昨天,我提供了 rowspan 和 colspan 工作的证据:***.com/questions/26679003/… 如果您查看 iText 官方网站上的其他表格示例,您可能已经找到了证据:itextpdf.com/sandbox/xmlworker 感谢您的帮助,有没有办法定义被解析的图像将具有填充 =0 ?所以单元格将完全符合图像大小? 我在表格单元格中有图像,当我将 html 转换为 pdf 时,一些图像添加了填充,我需要单元格与图像大小完全相同(没有任何填充、边距、间距) 有没有办法做到这一点?所以单元格将完全处于图像比例。 (我知道 Itext 可以将图像设置为:img.setSpacingAfter(0); img.setSpacingBefore(0);)但不知道如何在转换中做到这一点.. 有办法吗?这取决于。也许单元格的大小超过了图像的大小。您不会从我这里得到答案,因为:(1) 您没有与重现问题的简单 HTML 共享 SSCCE,并且 (2) 我的时间有限,我已经在您的问题上花费了大量空闲时间不知道是否会有投资回报的问题。另外:您正在使用答案的评论部分发布不同的问题。 (这在 *** 上没有完成。)

以上是关于使用 XMLWorker 和 itext 解析 html 时,如何将单元格间距添加到 pdftable的主要内容,如果未能解决你的问题,请参考以下文章

如何摆脱 iText XMLWorker 中的 Helvetica?

Itext PdfSmartCopy获取Null指针异常

iText7 将 HTML 转换为 PDF“System.NullReferenceException”。

使用itextsharp xmlworker 将html转换为pdf并垂直写入文本

ITextSharp v5.5.13.0 XMLWorker土耳其语字符问题

如何使用 iText 获取使用多种字体呈现的 pdf