Anomalie #4130
fermé[Report 4116] [OOO Layout] Des caractères apparaissent comme des htmlentities
100%
Les text HTML sont correctement affiché dans les variables simples (::set()) car leur valeur est directement mise dans le XML par remplacement.
Par contre pour les tableaux ce remplacement est via le DOM est les & sont donc transformés en '&'.
Il faut dans la méthode OooLayout::replaceNodeText() ajouter un déencodage avant le remplacement .
if ($objNodeNested->nodeType == XML_TEXT_NODE) {
if ($objNodeNested->nodeValue != "") {
if (strpos($strNewContent, '<text:p>') !== false) {
$strNewContent = str_replace('<', '--Lower.Than--', $strNewContent);
$strNewContent = str_replace('>', '--Greater.Than--', $strNewContent);
--> ICI $strNewContent=$this->unxmlEntities($strNewContent);
}
$objNodeNested->nodeValue = str_replace($strOldContent, $strNewContent, $objNodeNested->nodeValue);
}
static public function unxmlEntities($s)
{
return str_replace(array(
"&",
'<',
'>'
) , array(
"&",
'<',
'>'
) , $s);
}Ajouter un test sur TestOooSimpleLayout
Description
Soit une famille A contenant un tableau T ayant une colonne tt de type htmlText.
Je veux faire une vue pdf de A et j'ai dans ma famille le code suivant :
public function myOOOValue($attrId, $defaultValue = "", $index = -1)
{
return $this->getOooAttrValue($attrId, "_self", false, $index) ? : $defaultValue;
}
et dans mon contrôleur de vue le code suivant
$tts = array();
foreach($this->getTValue('tt') as $index=>$proc)
{
$tt = array(
"V_TT" => $this->myOOOValue('tt','',$index),
);
$tts[] = $tt;
}
$layout->SetBlockData("",$tts);
NB : on peut utiliser setRepeteable à la place de setBlockData le résultat est le même.
J'ai dans le fichier de template la balise [V_TT] dans une case d'un tableau.
Lorsque que je génère mon PDF si dans tt je met :
<p>je fais un test &&& @@@ <<<!!!
j'obtiens :
<p>je fais un test &&& @@@ <<<!!!
Mis à jour par Nicolas Thing-Leoh il y a presque 13 ans
- Statut changé de Analysé à Assigné
- % réalisé changé de 0 à 100
Mis à jour par Éric Brison il y a presque 13 ans
- Statut changé de Assigné à Intégré
Appliqué par commit commit:23463917c73235c5664b65f6c07f517ca11569b4.