Je souhaite insérer des images SVG dans mes PDF, et il se trouve que tous ceux que je génère moi-même se convertissent mal (les exemples livrés fonctionnent parfaitement).
Voici, pour exemple, un gros pâté généré par Illustrator :
Le code que je donne à la lib en observant les fichiers d'exemple :
<draw id="logo" style="width:80mm; height:70mm;" > <path style="fill: #E2001A; stroke: #000000;" d="M63.2541504 132.1992188V42.3740234c0 0 87.7197266-9.1230469 87.7197266 44.9121094s-57.1933594 57.543457-57.1933594 22.8076172C93.7805176 92.5498047 63.2541504 84.4794922 63.2541504 132.1992188z"/> </draw>
Et voici ce que j'obtiens en sortie
J'ai essayé avec plusieurs fichiers svg (tous sortis d'Illustrator) et j'ai téléchargé plusieurs fois la lib. Sans effet.
Alors j'ai vu que des fois les <path /> sont insérés dans des <g>. J'ai essayé, ça ne change rien.
J'ai vu aussi que l'ensemble du svg était parfois encapsulé dans un <g> avec des règles comme translate() ou scale() qui servent pas à grand chose. J'ai essayé aussi, ça ne chage rien (ou alors j'ai carrément plus rien en sortie).
Il y a une règle de syntaxe particulière à respecter ? De ce que j'ai vu, la balise <path /> et l'attribut d sont bien gérés normalement.
Au cas où, voici le code d'inclusion
pdf.php :
<?php ob_start(); ?>
<page backtop="30mm" backleft="30mm" backright="30mm" backbottom="30mm">
<?php include("test.php"); ?>
</page>
<?php
$body = ob_get_clean();
include("html2pdf/html2pdf.class.php");
try{
$pdf = new HTML2PDF("P", "A4", "fr");
$pdf->pdf->SetDisplayMode("fullpage");
$pdf->writeHTML($body);
$pdf->Output("test.pdf");
}
catch(HTML2PDF_exception $e){echo $e;}
?>
test.php :
<?php
$svg = file_get_contents('images/test.svg');
$svg_attributs=' id="logo" style="width:80mm; height:70mm;" ';
$svg = preg_replace('#<svg\b[^>]*>(.+)</svg>#s', '<draw'.$svg_attributs.'>$1</draw>', $svg);
echo $svg;
?>
Merci pour votre aide.