Hello,
The dev team has checked your change. Although a null unit should happen, the best solution is returning a valid width and type if null:
// check if the unit is not set
if ($sHtmlUnit == null) {
return(array(0, 'dxa'));
}
This is the whole method with the change applied:
private function _wordMLUnits($sHtmlUnit, $fontSize = false)
{
// check if the unit is not set
if ($sHtmlUnit == null) {
return(array(0, 'dxa'));
}
if (!preg_match('/^(-?\d*\.?\d*)(%|em|pt|px)?$/i', trim($sHtmlUnit), $match)) {
return(array(0, 'dxa'));
}
$match[1] = (strpos($match[1], '.') === 0 ? '0' : '') . $match[1];
$match[2] = empty($match[2]) ? '' : $match[2];
//if($match[2] != 'em' && $match[2] != 'px' && !empty($fontSize)) $match[2] = 'pt';
switch ($match[2]) {
case '%': //in WordML the precentage is given in fiftieths of a percent
$widthType = 'pct';
$width = 50 * $match[1];
break;
case 'em':
$widthType = 'dxa';
$width = 20 * $match[1] * $fontSize;
break;
case 'pt': //in WordML the width is given in twentieths of a point
$widthType = 'dxa';
$width = 20 * $match[1];
break;
case 'px': //a pixel is around 3/4 of a point
default: //if no unit we asume is given in pixels
$widthType = 'dxa';
$width = 15 * $match[1];
}
return(array($width, $widthType));
}
This change will be added in the next version of phpdocx.
Regards.