当“--width”=>时,带有wkhtmltoimage的超大图像1140

时间:2016-01-11 04:56:24

标签: php ubuntu centos wkhtmltopdf

有点奇怪的问题。 我正在生成一些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)?

1 个答案:

答案 0 :(得分:0)

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

所以基本上在您的$ fileIn中,在样式标签中添加

html, body {
  width:1140px !important;
}

当然,如果没有其他因素影响文件中这些元素的宽度,则可以省略!important。