1

我在我们的生产 Debian 服务器上安装了出色的软件 wkhtmltopdf,用于从 URL 创建 PDF。我们将生成的 PDF 流式传输(我希望这是正确的术语)到客户端,我们没有兴趣将它们存储在服务器端。

我们仅从本地 URL 生成 PDF(在自己的服务器上)。但是,URL 仍然基于域而不是本地 IP,因为服务器上有多个站点。

我们的问题是,对于某些本地页面,我们得到的只是一个完全空白的页面(甚至不是 PDF)。响应代码为 200,但内容类型为 text/html。对于那些将 PDF 成功流式传输到客户端的页面,内容类型为 application/pdf。

我认为在生成 PDF 时可能出现问题,所以我运行了与 PHP 执行完全相同的命令,然后成功生成了 PDF。

我正在使用此页面上的库使 PHP 与 wkhtmltopdf 连接。

$pdf = new WkHtmlToPdf(array(
        'margin-left'=>0,
        'margin-right'=>0,
        'margin-top'=>0,
        'margin-bottom'=>0,
        'print-media-type',
        'disable-smart-shrinking'
    ));
    $url = "http://myserver.se/$url";
    $pdf->addPage($url);
    $pdf->send();

为什么我会返回某些 URL 的空白页?

4

1 回答 1

0

事实证明,问题出在我正在使用的库中。我无法准确说出问题所在,但是当成功创建 PDF 时,wkhtmlpdf 类的 send 方法中的 proc_close 返回 2 而不是预期的 0。这导致库认为没有创建 PDF,它只是返回 false,表示没有任何内容输出给客户端。我通过使用 PHP 的 file_exists 函数检查文件是否存在来解决它。

于 2013-04-12T22:58:27.303 回答