fix converting margin to incorrect unit (points instead of twips)
fix image alignment on float - relative to inner margin instead of page margin
This commit is contained in:
parent
3066d47003
commit
889f4e3381
|
|
@ -633,11 +633,18 @@ class Html
|
||||||
}
|
}
|
||||||
$styles['italic'] = $tValue;
|
$styles['italic'] = $tValue;
|
||||||
break;
|
break;
|
||||||
|
case 'margin':
|
||||||
|
$cValue = Converter::cssToTwip($cValue);
|
||||||
|
$styles['spaceBefore'] = $cValue;
|
||||||
|
$styles['spaceAfter'] = $cValue;
|
||||||
|
break;
|
||||||
case 'margin-top':
|
case 'margin-top':
|
||||||
$styles['spaceBefore'] = Converter::cssToPoint($cValue);
|
// BC change: up to ver. 0.17.0 incorrectly converted to points - Converter::cssToPoint($cValue)
|
||||||
|
$styles['spaceBefore'] = Converter::cssToTwip($cValue);
|
||||||
break;
|
break;
|
||||||
case 'margin-bottom':
|
case 'margin-bottom':
|
||||||
$styles['spaceAfter'] = Converter::cssToPoint($cValue);
|
// BC change: up to ver. 0.17.0 incorrectly converted to points - Converter::cssToPoint($cValue)
|
||||||
|
$styles['spaceAfter'] = Converter::cssToTwip($cValue);
|
||||||
break;
|
break;
|
||||||
case 'border-color':
|
case 'border-color':
|
||||||
self::mapBorderColor($styles, $cValue);
|
self::mapBorderColor($styles, $cValue);
|
||||||
|
|
@ -676,7 +683,7 @@ class Html
|
||||||
}
|
}
|
||||||
// normalization: in HTML 1px means tinest possible line width, so we cannot convert 1px -> 15 twips, coz line'd be bold, we use smallest twip instead
|
// normalization: in HTML 1px means tinest possible line width, so we cannot convert 1px -> 15 twips, coz line'd be bold, we use smallest twip instead
|
||||||
$size = strtolower(trim($matches[1]));
|
$size = strtolower(trim($matches[1]));
|
||||||
// (!) BC change: up to ver. 0.17.0 Converter was incorrectly converting to points - Converter::cssToPoint($matches[1])
|
// BC change: up to ver. 0.17.0 incorrectly converted to points - Converter::cssToPoint($size)
|
||||||
$size = ($size == '1px') ? 1 : Converter::cssToTwip($size);
|
$size = ($size == '1px') ? 1 : Converter::cssToTwip($size);
|
||||||
// valid variants may be e.g. borderSize, borderTopSize, borderLeftColor, etc ..
|
// valid variants may be e.g. borderSize, borderTopSize, borderLeftColor, etc ..
|
||||||
$styles["border{$which}Size"] = $size; // twips
|
$styles["border{$which}Size"] = $size; // twips
|
||||||
|
|
@ -732,14 +739,14 @@ class Html
|
||||||
case 'float':
|
case 'float':
|
||||||
if (trim($v) == 'right') {
|
if (trim($v) == 'right') {
|
||||||
$style['hPos'] = \PhpOffice\PhpWord\Style\Image::POS_RIGHT;
|
$style['hPos'] = \PhpOffice\PhpWord\Style\Image::POS_RIGHT;
|
||||||
$style['hPosRelTo'] = \PhpOffice\PhpWord\Style\Image::POS_RELTO_PAGE;
|
$style['hPosRelTo'] = \PhpOffice\PhpWord\Style\Image::POS_RELTO_MARGIN; // inner section area
|
||||||
$style['pos'] = \PhpOffice\PhpWord\Style\Image::POS_RELATIVE;
|
$style['pos'] = \PhpOffice\PhpWord\Style\Image::POS_RELATIVE;
|
||||||
$style['wrap'] = \PhpOffice\PhpWord\Style\Image::WRAP_TIGHT;
|
$style['wrap'] = \PhpOffice\PhpWord\Style\Image::WRAP_TIGHT;
|
||||||
$style['overlap'] = true;
|
$style['overlap'] = true;
|
||||||
}
|
}
|
||||||
if (trim($v) == 'left') {
|
if (trim($v) == 'left') {
|
||||||
$style['hPos'] = \PhpOffice\PhpWord\Style\Image::POS_LEFT;
|
$style['hPos'] = \PhpOffice\PhpWord\Style\Image::POS_LEFT;
|
||||||
$style['hPosRelTo'] = \PhpOffice\PhpWord\Style\Image::POS_RELTO_PAGE;
|
$style['hPosRelTo'] = \PhpOffice\PhpWord\Style\Image::POS_RELTO_MARGIN; // inner section area
|
||||||
$style['pos'] = \PhpOffice\PhpWord\Style\Image::POS_RELATIVE;
|
$style['pos'] = \PhpOffice\PhpWord\Style\Image::POS_RELATIVE;
|
||||||
$style['wrap'] = \PhpOffice\PhpWord\Style\Image::WRAP_TIGHT;
|
$style['wrap'] = \PhpOffice\PhpWord\Style\Image::WRAP_TIGHT;
|
||||||
$style['overlap'] = true;
|
$style['overlap'] = true;
|
||||||
|
|
|
||||||
|
|
@ -779,7 +779,7 @@ HTML;
|
||||||
|
|
||||||
$xpath = '/w:document/w:body/w:p[4]/w:pPr/w:spacing';
|
$xpath = '/w:document/w:body/w:p[4]/w:pPr/w:spacing';
|
||||||
$this->assertTrue($doc->elementExists($xpath));
|
$this->assertTrue($doc->elementExists($xpath));
|
||||||
$this->assertEquals(22.5, $doc->getElement($xpath)->getAttribute('w:before'));
|
$this->assertEquals(450, $doc->getElement($xpath)->getAttribute('w:before'));
|
||||||
$this->assertEquals(0, $doc->getElement($xpath)->getAttribute('w:after'));
|
$this->assertEquals(0, $doc->getElement($xpath)->getAttribute('w:after'));
|
||||||
$this->assertEquals(240, $doc->getElement($xpath)->getAttribute('w:line'));
|
$this->assertEquals(240, $doc->getElement($xpath)->getAttribute('w:line'));
|
||||||
}
|
}
|
||||||
|
|
@ -869,10 +869,6 @@ HTML;
|
||||||
Html::addHtml($section, $html);
|
Html::addHtml($section, $html);
|
||||||
$doc = TestHelperDOCX::getDocument($phpWord, 'Word2007');
|
$doc = TestHelperDOCX::getDocument($phpWord, 'Word2007');
|
||||||
|
|
||||||
// uncomment to see results
|
|
||||||
file_put_contents('./table_src.html', $html);
|
|
||||||
file_put_contents('./table_result_'.time().'.docx', file_get_contents( TestHelperDOCX::getFile() ) );
|
|
||||||
|
|
||||||
$xpath = '/w:document/w:body/w:tbl/w:tr/w:tc[1]/w:tcPr/w:vAlign';
|
$xpath = '/w:document/w:body/w:tbl/w:tr/w:tc[1]/w:tcPr/w:vAlign';
|
||||||
$this->assertFalse($doc->elementExists($xpath));
|
$this->assertFalse($doc->elementExists($xpath));
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue