wkhtmltopdf无法将本地页面转换为PDF

时间:2012-05-08 16:48:48

标签: php pdf wkhtmltopdf

我一直试图让wkhtmltopdf转换网站上的网页,而且它无法转换相同的网页。它将转换和存储外部页面(尝试使用谷歌和bbc.co.uk,两者都有效)所以权限很好,但如果我尝试转换本地页面,无论是静态html文件还是脚本生成的文件,失败前需要大约3分钟。

输出显示页面无法加载,如果强行忽略这一点,我最终会得到一个空白的PDF。

我认为它可能是会话锁定但是关闭会话会导致同样的问题。我觉得这有点像服务器的行为方式

以下是相关代码:

            session_write_close ();
    set_time_limit (0);
            ini_set('memory_limit', '1024M');
    Yii::app()->setTheme("frontend");

    // Grabbing the page name
    $ls_url = Yii::app()->request->getHostInfo().Yii::app()->request->url;

    // Let's remove the PDF otherwise we'll be in endless loop
    $ls_url = str_replace('.pdf','',$ls_url);

    // Setting paths
    $ls_basePath = Yii::app()->basePath."/../extras/wkhtmltopdf/";
    if(PHP_OS=="Darwin")
        $ls_binary = $ls_basePath . "wkhtmltopdf-osx";
    else 
        $ls_binary = $ls_basePath . "wkhtmltopdf";

    $ls_generatedPagesPath = $ls_basePath . "generated-pages/";
    $ls_outputFileName = str_replace(array("/",":"),"-",$ls_url)."--".date("dmY-His").".pdf";
    $ls_outputFile = $ls_generatedPagesPath. $ls_outputFileName;

    // making sure no nasty chars are in place
    $ls_command = escapeshellcmd($ls_binary ." --load-error-handling ignore " . $ls_url . " " . $ls_outputFile);


    // Let's run things now
    system($ls_command);

1 个答案:

答案 0 :(得分:2)

你是lynx那个确切的网址吗?因为wkhtmltopdf实际上是一个小而强大的webkit浏览器,它就像普通的浏览器一样失败。

检查您提供的网址,检查您网页中的外部网址是否可以从您的服务器访问。它在开始制作PDF之前加载CSS,外部图像,iframe,所有内容。

就个人而言,我喜欢wkhtmltpdf。什么都没有。