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

问题描述 投票:1回答:1

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

这一代很好。在浏览器中预览生成的HTML在各种分辨率下看起来很可爱。然而,WKHTMLTOPDF(或者更确切地说,wkhtmltoimage)给了我一些奇怪的行为,它的--width标志。

我有以下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”的图像。但是,报告看起来有点狡猾,所以我增加了--width ...

$command = 'wkhtmltoimage --width 1140 ' . $fileIn . ' ' . $fileOut;

现在这仍然会生成一个图像,但是,图像现在是36480像素宽,内容居中,右边是一堆黑色空间。

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

还有其他人经历过这个吗?我做了一些蠢事(除了使用exec)?

php ubuntu centos wkhtmltopdf
1个回答
0
投票

我经历过相同的行为,我通过改变html元素的宽度来修复它,以匹配我在命令中传递的宽度,它工作正常

所以基本上在你的$ fileIn中添加一个样式标签

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

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

© www.soinside.com 2019 - 2024. All rights reserved.