diff --git a/CHANGELOG.md b/CHANGELOG.md
index e5ce3c15..9ec1deef 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,9 +7,11 @@ v0.17.0 (?? ??? 2019)
----------------------
### Added
- Add RightToLeft table presentation. @troosan #1550
+- Set complex type in template @troosan #1565
- Add support for page vertical alignment. @troosan #672 #1569
### Fixed
+- Fix HTML border-color parsing. @troosan #1551 #1570
### Miscelaneous
- Use embedded http server to test loading of remote images @troosan #
diff --git a/samples/Sample_26_Html.php b/samples/Sample_26_Html.php
index 82a5cf6e..6bd926fe 100644
--- a/samples/Sample_26_Html.php
+++ b/samples/Sample_26_Html.php
@@ -74,7 +74,7 @@ $html .= '
- | 1 | 2 |
+ | 1 | 2 |
| This is bold text | | 6 |
';
diff --git a/src/PhpWord/Shared/Html.php b/src/PhpWord/Shared/Html.php
index 7f4bf825..66ddc9f5 100644
--- a/src/PhpWord/Shared/Html.php
+++ b/src/PhpWord/Shared/Html.php
@@ -581,7 +581,7 @@ class Html
$styles['spaceAfter'] = Converter::cssToPoint($cValue);
break;
case 'border-color':
- $styles['color'] = trim($cValue, '#');
+ self::mapBorderColor($styles, $cValue);
break;
case 'border-width':
$styles['borderSize'] = Converter::cssToPoint($cValue);
@@ -738,6 +738,20 @@ class Html
}
}
+ private static function mapBorderColor(&$styles, $cssBorderColor)
+ {
+ $numColors = substr_count($cssBorderColor, '#');
+ if ($numColors === 1) {
+ $styles['borderColor'] = trim($cssBorderColor, '#');
+ } elseif ($numColors > 1) {
+ $colors = explode(' ', $cssBorderColor);
+ $borders = array('borderTopColor', 'borderRightColor', 'borderBottomColor', 'borderLeftColor');
+ for ($i = 0; $i < min(4, $numColors, count($colors)); $i++) {
+ $styles[$borders[$i]] = $colors[$i];
+ }
+ }
+ }
+
/**
* Transforms a HTML/CSS alignment into a \PhpOffice\PhpWord\SimpleType\Jc
*
diff --git a/tests/PhpWord/Shared/HtmlTest.php b/tests/PhpWord/Shared/HtmlTest.php
index 2f9a4be4..43472324 100644
--- a/tests/PhpWord/Shared/HtmlTest.php
+++ b/tests/PhpWord/Shared/HtmlTest.php
@@ -298,7 +298,7 @@ class HtmlTest extends AbstractWebServerEmbeddedTest
| header a |
header b |
- header c |
+ header c |
@@ -313,6 +313,11 @@ class HtmlTest extends AbstractWebServerEmbeddedTest
$this->assertTrue($doc->elementExists('/w:document/w:body/w:tbl/w:tr/w:tc'));
$this->assertTrue($doc->elementExists('/w:document/w:body/w:tbl/w:tblPr/w:jc'));
$this->assertEquals(Jc::START, $doc->getElementAttribute('/w:document/w:body/w:tbl/w:tblPr/w:jc', 'w:val'));
+ //check border colors
+ $this->assertEquals('#00AA00', $doc->getElementAttribute('/w:document/w:body/w:tbl/w:tr[1]/w:tc[3]/w:tcPr/w:tcBorders/w:top', 'w:color'));
+ $this->assertEquals('#00BB00', $doc->getElementAttribute('/w:document/w:body/w:tbl/w:tr[1]/w:tc[3]/w:tcPr/w:tcBorders/w:right', 'w:color'));
+ $this->assertEquals('#00CC00', $doc->getElementAttribute('/w:document/w:body/w:tbl/w:tr[1]/w:tc[3]/w:tcPr/w:tcBorders/w:bottom', 'w:color'));
+ $this->assertEquals('#00DD00', $doc->getElementAttribute('/w:document/w:body/w:tbl/w:tr[1]/w:tc[3]/w:tcPr/w:tcBorders/w:left', 'w:color'));
}
/**