wkhtmltopdf 设置是否正确

wkhtmltopdf 设置是否正确

我正在使用这个(https://github.com/KnpLabs/KnpSnappyBundle) 将 HTML 文件渲染为 pdf。我在测试服务器上构建了它,一切都运行良好,但是当我将其移动到实时服务器时,根本没有显示任何图像。这两个服务器都是 AWS EC2。我尝试使用 png 和 jpg 图像以及相对、绝对和完整路径,但似乎都不起作用。

对我来说,问题似乎出在实时服务器的配置上,但我自己没有设置它,也不确定如何检查它。

如果我直接访问它们,并且在生成 pdf 之前,图像就会显示出来,所以我知道图像在那里是正常的。

我尝试/home/ubuntu/wkhtmltox/bin/wkhtmltopdf http://www.google.com test.pdf在控制台中输入,结果如下

正在加载页面 (1/6) QSslSocket: 无法解析 SSLv2_client_method ] 10% QSslSocket: 无法解析 SSLv2_server_method 正在计数页面 (2/6)
正在解析链接 (4/6)
正在加载页眉和页脚 (5/6)
打印页面 (6/6) 完成

然后它会将主页的副本保存到服务器。所以它肯定能正常工作,但我不明白为什么我在网站上使用它时它不起作用。

所有路径都是绝对路径,原来是 http://{{ domain }}/pdf/images/background_logo.png 等,我改成了http://subdomain.livesite.com/pdf/images/background_logo.png等以确保路径绝对正确,但这没有任何区别。我在浏览器中测试了路径,它们加载没有问题。这在测试服务器上运行良好,所以我不确定为什么它在实时网站上不起作用。用于生成 pdf 的代码是:

public function generatePdf($app)
{
    $products = $this->getRecurringOrderProducts();    
    if (count($products) > 0)
    {   
        $filename = $this->getPdfFilename($app);
        if (!file_exists($filename))
        {   
            // Generate HTML
            $html = $app['twig']->render('order/pdf.twig', array(    
                'entry' => $this,    
                'products' => $products,    
                'expiry_date' => $this->getExpiryDate(), // Add this line
                'content_height' => intval( (8*100*count($products))/95 )+1,    
                'domain' => $app['config']['domain'],    
            ));    
            // Generate PDF
            $snappy = new Pdf($app['wkhtmltox_bin']);    
            $snappy->setOption('orientation', 'landscape');    
            $snappy->generateFromHtml(utf8_decode($html), $filename);    
        }
    }    
}

我正在使用 wkhtmltopdf 版本 0.9.9,如果有帮助的话

我不确定我做错了什么,但如果能提供任何帮助我将非常感激。

答案1

我已经设法解决了这个问题,问题是图像 URL 需要是绝对的,但是当我之前测试它时,服务器没有缓存它,所以显示的是旧文件。

相关内容