Php wkhtmltopdf-编码问题

Php wkhtmltopdf-编码问题,php,encoding,wkhtmltopdf,Php,Encoding,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.

我正在使用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);
$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';
$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';
html文件具有正确的编码,但即使我将--encoding windows-1250参数设置为command string,它也无法工作。。。谢谢你的建议

编辑: 我解决了这个问题!捕获在常量WKHTML_LIB中,我在页面开头定义了:

define('WKHTML_LIB', "../wkhtmltopdf/wkhtmltopdf-amd64");
我只是直接将路径写到exec();命令,现在它甚至可以与标志一起工作。很抱歉为这么一件小事打扰你。。。 现在,$commandString行如下所示:

$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);
$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';
$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。作品包括封面、目录、书签、内容和标题。还测试了韩文和中文字符,甚至他们的工作

使用生成的PDF(已删除文件位置)
--打印媒体类型--页面大小A5--页眉html header.html--页脚html footer.html--页边距底部10mm--页边距顶部10mm--页边距左侧10mm--页边距右侧10mm cover cover.html toc--xsl样式表tocfile.xsl temp.html temp.pdf

temp.html是极其无效的XHTML,第一行显示
。temp.html文件是使用UTF-8用C#写入磁盘的,它可以正常工作。我真的建议尽可能使用UTF-8


我解决了这个问题!捕获在常量WKHTML_LIB中,我在页面开头定义了:

define('WKHTML_LIB', "../wkhtmltopdf/wkhtmltopdf-amd64");
我只是直接将路径写到exec();命令,现在它甚至可以与标志一起工作。很抱歉为这么一件小事打扰你。。。现在,$commandString行如下所示:

$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);
$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';
$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';
供日后参考:

我对德国umlauts也有同样的问题

我一加上

<meta charset="UTF-8" />

到html页面,问题就解决了


当然,这是以您的页面作为utf-8服务为前提的。

http之前是否应该有空格<代码>WKHTML_LIB。'http://它不应该存在,但不管它是否存在都不会产生任何影响。。命令执行时没有问题,生成了pdf,但编码不正确。。。。例如,这里没有“ř”,而是“ø”……如果你解决了这个问题,就把它变成一个实际的答案。不要在标题中添加[已解决]。我认为这不会有帮助。。。我安装的几乎每种字体都支持捷克字符,此外,如果远程用户想要显示pdf,这并不能解决问题…:/顺便说一句:捷克语的特殊字符是:ť、ď、ň、ó、ě、š、č、ř、ž、ý、á、í、é、ú、ů。您有什么理由必须将编码从UTF-8转换为Windows-1250吗?另外,也许可以尝试使用iconv,并在out\u字符集参数后面附加//IGNORE。也许还可以尝试一下mb_convert_编码。当我把它放在UTF-8中时,它也会显示错误的字符。Win1250是唯一的编码,它用正确的字符显示了html页面。我相信它更适合我的上述评论。但由于它在浏览器中正确显示,我想这不是编码问题。我尝试了您的命令,但它就是不起作用:((好像添加的参数被忽略了……即使我更改了例如margin top值,也没有任何效果。嗯,我只是再次测试,将我的margin从10mm更改为20mm,效果很好。你能把
$commandString
的内容和你的源HTML发布到某个地方,这样我就可以完全使用你的材料进行测试了吗我会直接使用wkhtmltopdf,而不是从php。如果你能给出源代码和确切的命令,我会尝试在这里复制这个问题。现在我尝试直接运行它,标志也可以工作,甚至编码也可以工作…你知道我如何强制它从php运行吗?我不能直接运行它,因为我需要每个用户都能够生成pdf b只需单击一次,不下载wkhtml…我已经有一段时间没有使用PHP了,所以目前没有PHP的开发服务器(我主要使用C#),但我可以稍后在有时间时进行检查,但至少编码问题可以解决:)在人们尝试获取wkhtmltopdf的地方也有类似的问题,您可能想查看一下。看来让PHP+wkhtmltopdf工作起来很有挑战性,所以如果我有时间,我可能会尝试看看我是否能做到。好的,我期待着:)真的,因为我使用这个程序,没有一个步骤我不会遇到一些问题:(可能在最初的解决方案中,它缺少引号中的引号,因此它们在插入命令字符串时出现。比如“带有空格和内容的某个路径”。很高兴这是我在解决问题时读到的第一件事:D