web-dev-qa-db-fra.com

wkhtmltopdf - problème d'encodage

J'utilise wkhtmltopdf pour exporter des pages html au format pdf, mais il semble qu'il y ait un problème avec les caractères tchèques.

$html = ob_get_clean();
$html = iconv("UTF-8","Windows-1250", $html);
file_put_contents('../export.php', $html);

$commandString = WKHTML_LIB.'http://www.estiroad.com/export.php sestava.pdf';
exec($commandString);

Le fichier .html a le bon encodage, mais même lorsque je règle --encoding le paramètre windows-1250 sur la chaîne de commande, cela ne fonctionne tout simplement pas ... Merci pour vos idées ...

EDIT: J'ai résolu le problème! La capture était dans la constante WKHTML_LIB, que j'ai définie au début de la page:

define('WKHTML_LIB', "../wkhtmltopdf/wkhtmltopdf-AMD64");

Je viens d'écrire le chemin directement à l'exec (); commande et maintenant cela fonctionne même avec les drapeaux. Désolé de vous déranger avec une telle trivialité ... Maintenant, la ligne $ commandString ressemble à ceci:

$commandString = '"../wkhtmltopdf/wkhtmltopdf-AMD64" --print-media-type --page-size A4 -R     50 --encoding windows-1250 --header-html header.html --margin-top 10mm --margin-bottom 10mm --margin-left 10mm --margin-right 10mm http://www.estiroad.com/export.php sestava.pdf';
17
Michal S

J'ai résolu le problème! La capture était dans la constante WKHTML_LIB, que j'ai définie au début de la page:

define('WKHTML_LIB', "../wkhtmltopdf/wkhtmltopdf-AMD64");

Je viens d'écrire le chemin directement à l'exec (); commande et maintenant cela fonctionne même avec les drapeaux. Désolé de vous déranger avec une telle trivialité ... Maintenant, la ligne $ commandString ressemble à ceci:

$commandString = '"../wkhtmltopdf/wkhtmltopdf-AMD64" --print-media-type --page-size A4 -R     50 --encoding windows-1250 --header-html header.html --margin-top 10mm --margin-bottom 10mm --margin-left 10mm --margin-right 10mm http://www.estiroad.com/export.php sestava.pdf';
5
Michal S

Pour référence future:

J'ai eu le même problème avec les umlauts allemands.

Dès que j'ai ajouté

<meta charset="UTF-8" />

sur la page html, le problème a été résolu.

Cela présuppose bien sûr que votre page est affichée sous la forme utf-8.

46
Marcel Burkhard

Je viens tout juste de faire un test avec les personnages que vous avez fournis et ils fonctionnent bien pour moi. Win7, wkhtmltopdf 0.11.0 rc2. Fonctionne sur la couverture, le toc, les signets, le contenu et les en-têtes. Également testé avec des caractères coréens et chinois et même ils fonctionnent.

PDF généré à l'aide de (emplacements de fichier supprimés) --print-media-type --page-size A5 --header-html header.html --footer-html footer.html --margin-bottom 10mm --margin-top 10mm --margin-left 10mm --margin-right 10mm cover cover.html toc --xsl-style-sheet tocfile.xsl temp.html temp.pdf

temp.html est XHTML extrêmement invalide, la première ligne dit <?xml version="1.0" encoding="iso-8859-1"?>. Le fichier temp.html a été écrit sur le disque avec C # en utilisant UTF-8 et cela fonctionne. Je suggère vraiment d'utiliser UTF-8 dans la mesure du possible.

Screenshot of generated PDF

0
Nenotlep

J'ai eu un problème similaire avec wkhtmltopdf auparavant où les caractères chinois n'étaient pas restitués correctement. J'ai résolu le problème en installant les polices chinoises appropriées.

Est-il nécessaire d'installer des polices liées au tchèque pour que les caractères s'affichent correctement? Comme je ne connais pas bien les caractères/polices tchèques, je ne suis pas sûr que cela s'applique. J'espère que cela t'aides.

0
Leon Chung