Я использую 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 везде, где это возможно.