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

Для справок:

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

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

 <meta charset="UTF-8" /> 

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

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

Я решил проблему! Уловка была в постоянном 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'; 

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

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

Только сейчас я проверил те персонажи, которые вы предоставили, и они отлично работают для меня. 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 был записан на диск с C #, используя UTF-8, и он работает. Я действительно предлагаю использовать UTF-8 везде, где это возможно.

Снимок экрана сгенерированного PDF-файла