fix parsing of border-color and add test
This commit is contained in:
parent
6e172747ec
commit
5206c7f690
|
|
@ -7,9 +7,11 @@ v0.17.0 (?? ??? 2019)
|
||||||
----------------------
|
----------------------
|
||||||
### Added
|
### Added
|
||||||
- Add RightToLeft table presentation. @troosan #1550
|
- Add RightToLeft table presentation. @troosan #1550
|
||||||
|
- Set complex type in template @troosan #1565
|
||||||
- Add support for page vertical alignment. @troosan #672 #1569
|
- Add support for page vertical alignment. @troosan #672 #1569
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
- Fix HTML border-color parsing. @troosan #1551 #1570
|
||||||
|
|
||||||
### Miscelaneous
|
### Miscelaneous
|
||||||
- Use embedded http server to test loading of remote images @troosan #
|
- Use embedded http server to test loading of remote images @troosan #
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,7 @@ $html .= '<table align="center" style="width: 50%; border: 6px #0000FF double;">
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr><td style="border-style: dotted;">1</td><td colspan="2">2</td></tr>
|
<tr><td style="border-style: dotted; border-color: #FF0000">1</td><td colspan="2">2</td></tr>
|
||||||
<tr><td>This is <b>bold</b> text</td><td></td><td>6</td></tr>
|
<tr><td>This is <b>bold</b> text</td><td></td><td>6</td></tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>';
|
</table>';
|
||||||
|
|
|
||||||
|
|
@ -581,7 +581,7 @@ class Html
|
||||||
$styles['spaceAfter'] = Converter::cssToPoint($cValue);
|
$styles['spaceAfter'] = Converter::cssToPoint($cValue);
|
||||||
break;
|
break;
|
||||||
case 'border-color':
|
case 'border-color':
|
||||||
$styles['color'] = trim($cValue, '#');
|
self::mapBorderColor($styles, $cValue);
|
||||||
break;
|
break;
|
||||||
case 'border-width':
|
case 'border-width':
|
||||||
$styles['borderSize'] = Converter::cssToPoint($cValue);
|
$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
|
* Transforms a HTML/CSS alignment into a \PhpOffice\PhpWord\SimpleType\Jc
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -298,7 +298,7 @@ class HtmlTest extends AbstractWebServerEmbeddedTest
|
||||||
<tr style="background-color: #FF0000; text-align: center; color: #FFFFFF; font-weight: bold; ">
|
<tr style="background-color: #FF0000; text-align: center; color: #FFFFFF; font-weight: bold; ">
|
||||||
<th style="width: 50pt">header a</th>
|
<th style="width: 50pt">header a</th>
|
||||||
<th style="width: 50">header b</th>
|
<th style="width: 50">header b</th>
|
||||||
<th style="border-color: #00FF00; border-width: 3px">header c</th>
|
<th style="border-color: #00AA00 #00BB00 #00CC00 #00DD00; border-width: 3px">header c</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
|
@ -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:tr/w:tc'));
|
||||||
$this->assertTrue($doc->elementExists('/w:document/w:body/w:tbl/w:tblPr/w:jc'));
|
$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'));
|
$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'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue