【问题标题】:Center a table horizontally with iText's XMLWorker使用 iText 的 XMLWorker 将表格水平居中
【发布时间】:2015-05-22 17:54:18
【问题描述】:

我尝试过以两种方式使表格居中:

尝试 1 代码:

<h1>Attempt 1</h1>

<table style="width: 50%; margin: 0 auto;">
    <tr>
        <th>foo</th>
        <td>bar</td>
    </tr>
    <tr>
        <th>foo</th>
        <td>bar</td>
    </tr>
</table>

尝试 2 代码:

<h1>Attempt 2</h1>

<table style="width: 50%;" align="center">
    <tr>
        <th>foo</th>
        <td>bar</td>
    </tr>
    <tr>
        <th>foo</th>
        <td>bar</td>
    </tr>
</table>

使用 XMLWorker 演示:http://demo.itextsupport.com/xmlworker/

这是 HTML 预览:

如您所见,两个表格都居中。
虽然,当我点击“转换”时,我得到了这个:

我后来也尝试将表格包装在 &lt;div style="text-align: center"&gt;&lt;/div&gt; 中,但没有成功

【问题讨论】:

  • 令我惊讶的是,在 XML Worker 中(尚)不支持设置表格的对齐方式。但是,添加对align 属性的支持相当容易。我只需要几行代码就可以实现这一点。它现在在我们的私有 gitlab 存储库中。更改将很快推送到 github。

标签: itext xmlworker


【解决方案1】:

如评论部分所述,XML Worker 尚不支持此功能。我们会将它添加到下一个版本中。如果您不能等到下一个版本,请应用此补丁:

diff --git a/src/main/java/com/itextpdf/tool/xml/html/table/Table.java b/src/main/java/com/itextpdf/tool/xml/html/table/Table.java
index 541818bfc9..e262b4a406 100644
--- a/src/main/java/com/itextpdf/tool/xml/html/table/Table.java
+++ b/src/main/java/com/itextpdf/tool/xml/html/table/Table.java
@@ -165,6 +165,19 @@ public class Table extends AbstractTagProcessor {
             table.setHeaderRows(headerRows + footerRows);
             table.setFooterRows(footerRows);

+            if ( tag.getAttributes().containsKey(HTML.Attribute.ALIGN)) {
+                String value = tag.getAttributes().get(HTML.Attribute.ALIGN);
+                if ( value != null ) {
+                    if (value.equalsIgnoreCase(CSS.Value.RIGHT)) {
+                        table.setHorizontalAlignment(Element.ALIGN_RIGHT);
+                    } else if ( value.equalsIgnoreCase(CSS.Value.LEFT)) {
+                        table.setHorizontalAlignment(Element.ALIGN_LEFT);
+                    } else if ( value.equalsIgnoreCase(CSS.Value.CENTER)) {
+                        table.setHorizontalAlignment(Element.ALIGN_CENTER);
+                    }
+                }
+            }
+
             int direction = getRunDirection(tag);
             if (direction != PdfWriter.RUN_DIRECTION_DEFAULT) {
                 table.setRunDirection(direction);

【讨论】:

  • 那么在下一个版本中,对齐的方式会像我的attempt 2代码那样吗?
  • 是的,但是下一个版本还有几个月的时间(我们刚刚发布了 5.5.6),这就是我向您发送补丁的原因。这样您就可以创建自己的中间版本。
猜你喜欢
  • 1970-01-01
  • 2013-09-24
  • 1970-01-01
  • 2011-04-19
  • 2012-03-17
  • 2015-09-28
  • 1970-01-01
  • 1970-01-01
  • 2019-04-26
相关资源
最近更新 更多