有点奇怪的问题。 我正在生成一些HTML报告,然后,由于Outlook 2010理解CSS / HTML /图像的局限性,我将整个该死的报告作为图像发送出来。
这一代很好用。在浏览器中预览生成的HTML在各种分辨率下看起来很可爱。然而,WKHTMLTOPDF(或者更确切地说,wkhtmltoimage)给了我一些奇怪的行为 - 它的--width标志。
我有以下PHP代码:
scp
这很有效。它会生成指定宽度为“1130”的图像。但是,该报告看起来有点狡猾,所以我增加了--width ...
# Converts a .html file to a .jpg file - requires wkhtmltopdf installed:
# http://wkhtmltopdf.org/downloads.html
function html_to_jpg($fileIn, $fileOut) {
echo "\nRendering HTML to image\n";
$command = 'wkhtmltoimage --width 1130 ' . $fileIn . ' ' . $fileOut;
$remove = 'rm -f ' . filter_var($fileOut, FILTER_SANITIZE_STRING);
try {
exec($remove);
exec($command);
return true;
} catch (Exception $e) {
return false;
}
}
现在这仍然会生成一个图像,但是,图像现在是36480像素宽,内容居中,右边是一堆黑色空间。
通过实验,我已经确认宽度< 1140不会产生这个问题,但上面的每个宽度都有。我已经在Ubuntu 15.10 Wily和CentOS 6.7上证实了这一点,它们都是从不同的RPM安装的。
还有其他人经历过这个吗?我做了一些蠢事(除了使用exec)?
答案 0 :(得分:0)
我经历了相同的行为,我通过更改html元素的宽度以匹配我在命令中传递的宽度来修复它,并且效果很好
所以基本上在您的$ fileIn中,在样式标签中添加
html, body {
width:1140px !important;
}
当然,如果没有其他因素影响文件中这些元素的宽度,则可以省略!important。