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';
Ответы
Ответ 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]()