2015-05-22 10 views
0

Я попытался центрирования таблицу двумя способами:Центр стол горизонтально XMLWorker IText в

ПОПЫТКА 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 demo: http://demo.itextsupport.com/xmlworker/

Это предварительный просмотр HTML:

html preview

Как вы можете видеть, обе таблицы центрированы.
Хотя, когда я нажимаю «преобразовать», я получаю это:

generated pdf

Я также попробовал позже оборачивать таблицу в <div style="text-align: center"></div>, который не работало

+0

К большому удивлению, установка выравнивания таблицы в документе XML Worker не поддерживается (пока). Однако довольно легко добавить поддержку атрибута 'align'. Для реализации этого потребовалось всего несколько строк кода. Теперь он находится в нашем частном репозитории gitlab. Изменения скоро будут перенесены в github. –

ответ

0

Как объяснен в разделе комментариев, это еще не поддерживается в 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); 
+0

Итак, в следующем выпуске способ его выравнивания будет похож на мой код 'попытка 2'? – sports

+0

Да, но следующий выпуск все еще находится на расстоянии нескольких месяцев (мы только что выпустили 5.5.6), и именно поэтому я отправляю вам патч. Таким образом, вы можете создать свой собственный промежуточный выпуск. –

Смежные вопросы