From e61c40e71d8670d3334afeb6e2478d8ee8ef1325 Mon Sep 17 00:00:00 2001
From: Abubakkar Rangara <>
Date: Tue, 24 Jul 2018 13:59:16 +0100
Subject: [PATCH] Adding table layout to the generated HTML if element has
layout style. This is useful when using creating PDF from PHPWord (e.g. using
dompdf), otherwise the PDF does not contain any layout for table.
---
src/PhpWord/Writer/HTML/Element/Table.php | 4 +++-
tests/PhpWord/Writer/HTML/ElementTest.php | 19 +++++++++++++++++++
2 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/src/PhpWord/Writer/HTML/Element/Table.php b/src/PhpWord/Writer/HTML/Element/Table.php
index 844066f4..068f489a 100644
--- a/src/PhpWord/Writer/HTML/Element/Table.php
+++ b/src/PhpWord/Writer/HTML/Element/Table.php
@@ -39,7 +39,9 @@ class Table extends AbstractElement
$rows = $this->element->getRows();
$rowCount = count($rows);
if ($rowCount > 0) {
- $content .= '
' . PHP_EOL;
+ $tableStyle = $this->element->getStyle();
+ $tableLayout = $tableStyle === null ? '' : $tableStyle->getLayout();
+ $content .= ''. PHP_EOL;
for ($i = 0; $i < $rowCount; $i++) {
/** @var $row \PhpOffice\PhpWord\Element\Row Type hint */
$rowStyle = $rows[$i]->getStyle();
diff --git a/tests/PhpWord/Writer/HTML/ElementTest.php b/tests/PhpWord/Writer/HTML/ElementTest.php
index 7a6397ef..1f286c5f 100644
--- a/tests/PhpWord/Writer/HTML/ElementTest.php
+++ b/tests/PhpWord/Writer/HTML/ElementTest.php
@@ -157,4 +157,23 @@ class ElementTest extends \PHPUnit\Framework\TestCase
$this->assertTrue(strpos($content, $expected) !== false);
}
+
+ /**
+ * Tests writing table with layout
+ */
+ public function testWriteTableLayout()
+ {
+ $phpWord = new PhpWord();
+ $section = $phpWord->addSection();
+ $section->addTable();
+ $table = $section->addTable(array('layout' => 'fixed'));
+
+ $row1 = $table->addRow();
+ $row1->addCell()->addText('fixed layout table');
+
+ $dom = $this->getAsHTML($phpWord);
+ $xpath = new \DOMXPath($dom);
+
+ $this->assertEquals('table-layout: fixed', $xpath->query('/html/body/table')->item(0)->attributes->getNamedItem('style')->textContent);
+ }
}