我一直在尝试让 wkhtmltopdf 转换网站上的页面,但它无法转换相同的页面。它将转换和存储外部页面(用 google 和 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);