Php 带有WKHTMLOTIMAGE的超大图像,当--宽度“=&燃气轮机;1140

Php 带有WKHTMLOTIMAGE的超大图像,当--宽度“=&燃气轮机;1140,php,ubuntu,centos,wkhtmltopdf,Php,Ubuntu,Centos,Wkhtmltopdf,有点奇怪。 我正在生成一些HTML报告,然后,由于Outlook 2010在理解CSS/HTML/图像方面的局限性,我将整个该死的报告作为图像发送出去 这一代人工作得很好。在浏览器中预览生成的HTML在一系列分辨率下看起来很可爱。然而,WKHTMLTOPDF(或者更确切地说,wkhtmltoimage)的宽度标志给了我一些奇怪的行为 我有以下PHP代码: # Converts a .html file to a .jpg file - requires wkhtmltopdf installed

有点奇怪。 我正在生成一些HTML报告,然后,由于Outlook 2010在理解CSS/HTML/图像方面的局限性,我将整个该死的报告作为图像发送出去

这一代人工作得很好。在浏览器中预览生成的HTML在一系列分辨率下看起来很可爱。然而,WKHTMLTOPDF(或者更确切地说,wkhtmltoimage)的宽度标志给了我一些奇怪的行为

我有以下PHP代码:

# 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;
    }
}
这很有效。它生成指定宽度为“1130”的图像。但是,报告在这个宽度上看起来有点可疑,所以我增加了--宽度

$command = 'wkhtmltoimage --width 1140 ' . $fileIn . ' ' . $fileOut;
现在这仍然会生成一个图像,但是,图像现在是36480像素宽,内容居中,右侧有一堆黑色空间

通过实验,我已经确认宽度<1140不会产生这个问题,但上面的每个宽度都会产生这个问题。我已经在Ubuntu15.10Wily和CentOS6.7上证实了这一点,它们都是从不同的RPM安装的


还有其他人经历过吗?我是否做了一些愚蠢的事情(除了使用exec)?

我也经历过同样的行为,我通过更改html元素的宽度以匹配我在命令中传递的宽度来修复它,并且效果很好

因此,基本上在$fileIn中,将其添加到样式标记中

html,正文{
宽度:1140px!重要;
}