我一直試圖讓wkhtmltopdf轉換網站上的頁面,並且它無法轉換相同的頁面。它會轉換和存儲外部頁面(嘗試它與谷歌和bbc.co.uk,都工作),所以權限很好,但如果我嘗試轉換本地頁面,無論是靜態HTML文件或腳本生成的,大約需要3分鐘才能失敗。wkhtmltopdf無法將本地頁面轉換爲PDF
輸出表示頁面加載失敗,如果強行忽略這一點,我會得到一個空白的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);
第一步爲我調試wkhtmltopdf是硬編碼'shell_exec()'中的命令。如果這有效,你知道這不是一個wkhtmltopdf問題。在處理其他事情之前,我會得到一行代碼與本地副本一起工作。 – Chords
_但是如果我嘗試轉換一個本地頁面......在失敗之前需要大約3分鐘 - 是否也是如果從命令行運行它的情況? – halfer