Html Writer - Do Not Generate background-color When Fill is None (#3016)
* Html Writer - Do Not Generate background-color When Fill is None For PR #3002, I noted that there was a problem with Dompdf truncating images. I raised an issue with them (https://github.com/dompdf/dompdf/issues/2980), and they agree that there is a bug; however, they also suggested a workaround, namely omitting background-color from any cells which the image overlays. That did not at first appear to be a solution which could be generalized for PhpSpreasheet. However, investigating further, I saw that Html Writer is generating background-color for all cells, even though most of them use the default Fill type None (which suggests that background-color should not be specified after all). So this PR changes HTML Writer to generate background-color only when the user has actually set Fill type to something other than None. This is not a complete workaround for the Dompdf problem - we will still see truncation if the image overlays a cell which does specify a Fill type - however, it is almost certainly good enough for most use cases. In addition to that change, I made the generated Html a little smaller and the code a little more efficient by combining the TD and TH styles for each cell into a single declaration and calling createCssStyle only once. * Revamp One Test Look for both td.style and th.style instead of just td.style in test.
This commit is contained in:
parent
d0781c3fd2
commit
e97428ba67
|
|
@ -940,8 +940,8 @@ class Html extends BaseWriter
|
|||
|
||||
// Calculate cell style hashes
|
||||
foreach ($this->spreadsheet->getCellXfCollection() as $index => $style) {
|
||||
$css['td.style' . $index] = $this->createCSSStyle($style);
|
||||
$css['th.style' . $index] = $this->createCSSStyle($style);
|
||||
$css['td.style' . $index . ', th.style' . $index] = $this->createCSSStyle($style);
|
||||
//$css['th.style' . $index] = $this->createCSSStyle($style);
|
||||
}
|
||||
|
||||
// Fetch sheets
|
||||
|
|
@ -1094,9 +1094,10 @@ class Html extends BaseWriter
|
|||
$css = [];
|
||||
|
||||
// Create CSS
|
||||
$value = $fill->getFillType() == Fill::FILL_NONE ?
|
||||
'white' : '#' . $fill->getStartColor()->getRGB();
|
||||
$css['background-color'] = $value;
|
||||
if ($fill->getFillType() !== Fill::FILL_NONE) {
|
||||
$value = '#' . $fill->getStartColor()->getRGB();
|
||||
$css['background-color'] = $value;
|
||||
}
|
||||
|
||||
return $css;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -99,11 +99,11 @@ class VisibilityTest extends Functional\AbstractFunctional
|
|||
self::assertEquals(1, $rowsrch);
|
||||
$rowsrch = preg_match('/^\\s*table[.]sheet0 tr[.]row1 [{] height:25pt [}]\\s*$/m', $html);
|
||||
self::assertEquals(1, $rowsrch);
|
||||
$rowsrch = preg_match('/^\\s*td[.]style1 [{].*text-decoration:line-through;.*[}]\\s*$/m', $html);
|
||||
$rowsrch = preg_match('/^\\s*td[.]style1, th[.]style1 [{].*text-decoration:line-through;.*[}]\\s*$/m', $html);
|
||||
self::assertEquals(1, $rowsrch);
|
||||
$rowsrch = preg_match('/^\\s*td[.]style2 [{].*text-decoration:underline line-through;.*[}]\\s*$/m', $html);
|
||||
$rowsrch = preg_match('/^\\s*td[.]style2, th[.]style2 [{].*text-decoration:underline line-through;.*[}]\\s*$/m', $html);
|
||||
self::assertEquals(1, $rowsrch);
|
||||
$rowsrch = preg_match('/^\\s*td[.]style3 [{].*text-decoration:underline;.*[}]\\s*$/m', $html);
|
||||
$rowsrch = preg_match('/^\\s*td[.]style3, th[.]style3 [{].*text-decoration:underline;.*[}]\\s*$/m', $html);
|
||||
self::assertEquals(1, $rowsrch);
|
||||
|
||||
$this->writeAndReload($spreadsheet, 'Html');
|
||||
|
|
|
|||
Loading…
Reference in New Issue