Added support for styling in lines

This commit is contained in:
Tim Otte 2020-09-29 12:17:25 +02:00
parent a53f7ff9c9
commit 4611333ee6
2 changed files with 23 additions and 11 deletions

View File

@ -231,14 +231,10 @@ class Segment implements IteratorAggregate, Countable
//throw new SegmentException("var $key not found in {$this->getName()}");
}
$value=$this->odf->htmlToUTFAndPreOdf($value);
$tag = $this->odf->getConfig('DELIMITER_LEFT') . $key . $this->odf->getConfig('DELIMITER_RIGHT');
$value = $encode ? htmlspecialchars($value) : $value;
$value = ($charset == 'ISO-8859') ? utf8_encode($value) : $value;
$value=$this->odf->preOdfToOdf($value);
$this->vars[$this->odf->getConfig('DELIMITER_LEFT') . $key . $this->odf->getConfig('DELIMITER_RIGHT')] = $value;
$this->vars[$tag] = $this->odf->convertVarToOdf($value, $encode, $charset);
return $this;
}
/**

View File

@ -141,7 +141,23 @@ class Odf
//}
}
$this->vars[$tag] = $this->convertVarToOdf($value, $encode, $charset);
return $this;
}
/**
* Replaces html tags in odt tags and returns a compatible string
* @param string $key Name of the variable within the template
* @param string $value Replacement value
* @param bool $encode If true, special XML characters are encoded
* @param string $charset Charset
* @return string
*/
public function convertVarToOdf($value, $encode = true, $charset = 'ISO-8859')
{
$value = ($charset == 'ISO-8859') ? utf8_encode($value) : $value;
$convertedValue = $value;
// Check if the value includes html tags
if ($this->_hasHtmlTag($value) === true) {
@ -155,7 +171,7 @@ class Odf
'<style:style style:name="supText" style:family="text"><style:text-properties style:text-position="super 58%" /></style:style>'
);
$this->vars[$tag] = $this->_replaceHtmlWithOdtTag($this->_getDataFromHtml($value), $customStyles, $fontDeclarations);
$convertedValue = $this->_replaceHtmlWithOdtTag($this->_getDataFromHtml($value), $customStyles, $fontDeclarations);
foreach ($customStyles as $key => $val) {
array_push($automaticStyles, '<style:style style:name="customStyle' . $key . '" style:family="text">' . $val . '</style:style>');
@ -179,9 +195,9 @@ class Odf
}
$this->contentXml = str_replace('</office:font-face-decls>', $fonts . '</office:font-face-decls>', $this->contentXml);
}
else $this->vars[$tag] = preg_replace('/(\r\n|\r|\n)/i', "<text:line-break/>", $value);
return $this;
else $convertedValue = preg_replace('/(\r\n|\r|\n)/i', "<text:line-break/>", $value);
return $convertedValue;
}
/**