Подтвердить что ты не робот

Wkhtmltopdf - проблема с кодировкой

Я использую wkhtmltopdf для экспорта html-страниц в pdf, но, похоже, у него есть проблема с чешскими символами... Я загружаю весь html в переменную, затем меняю кодировку и запускаю wkhtmltopdf следующим образом:

$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);

Файл .html имеет правильную кодировку, но даже когда я задал параметр --encoding windows-1250 для команды string, его просто не работает... Спасибо за любые идеи...

EDIT: Я решил проблему! Улов был в постоянном WKHTML_LIB, который я определил в начале страницы:

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

Я просто написал путь непосредственно к exec(); и теперь он работает даже с флагами. Извините за то, что беспокоило вас с такой тривиальностью... Теперь строка $commandString выглядит так:

$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';
4b9b3361

Ответ 1

Я решил проблему! Улов был в постоянном WKHTML_LIB, который я определил в начале страницы:

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

Я просто написал путь непосредственно к exec(); и теперь он работает даже с флагами. Извините за то, что беспокоило вас с такой тривиальностью... Теперь строка $commandString выглядит так:

$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';

Ответ 2

Для справок в будущем:

У меня была такая же проблема с немецкими умляутами.

Как только я добавил

<meta charset="UTF-8" />

на страницу html проблема была решена.

Это, конечно, предполагает, что ваша страница будет использоваться как utf-8.

Ответ 3

У меня была аналогичная проблема с wkhtmltopdf перед тем, как китайские символы были неправильно отображены. Я решил проблему, установив соответствующие китайские шрифты.

По какой-либо причине вы должны установить какие-либо чешские шрифты для правильного отображения символов? Поскольку я не знаком с чешскими символами/шрифтами, я не уверен, применимо ли это. Надеюсь, это поможет.

Ответ 4

Только что я проверил те персонажи, которые вы предоставили, и они отлично работают для меня. Win7, wkhtmltopdf 0.11.0 rc2. Работает по обложке, toc, закладкам, контенту и заголовкам. Также тестируется с корейскими и китайскими персонажами и даже работает.

PDF Сгенерировано с использованием (удалены файлы) --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 является чрезвычайно недействительным XHTML, первая строка говорит <?xml version="1.0" encoding="iso-8859-1"?>. Файл temp.html был записан на диск с С#, используя UTF-8, и он работает. Я действительно предлагаю использовать UTF-8, где это возможно.

Screenshot of generated PDF