使用iText'将桌子水平居中;s XMLWorker

使用iText'将桌子水平居中;s XMLWorker,itext,xmlworker,Itext,Xmlworker,我试过用两种方法将桌子居中: 尝试1代码: <h1>Attempt 1</h1> <table style="width: 50%; margin: 0 auto;"> <tr> <th>foo</th> <td>bar</td> </tr> <tr> <th>foo</th>

我试过用两种方法将桌子居中:

尝试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>
尝试1
福
酒吧
福
酒吧
尝试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>
尝试2
福
酒吧
福
酒吧
使用XMLWorker演示:

这是HTML预览:

如您所见,两个表都居中。
尽管如此,当我单击“变换”时,我得到以下结果:


后来我还尝试将表包装到一个
中,但它不起作用

,如注释部分所述,这在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);

令我惊讶的是,XML Worker中还不支持设置表的对齐方式。但是,添加对
align
属性的支持相当容易。我只用了几行代码就实现了这一点。它现在位于我们的私有gitlab存储库中。这些更改很快将被推送到github。因此,在下一个版本中,调整它的方式将类似于我的
尝试2
代码?是的,但下一个版本还有几个月就要发布了(我们刚刚发布了5.5.6),这就是我向您发送补丁的原因。通过这种方式,您可以创建自己的中间版本。