2013-04-12 61 views
0

我在我們的生產Debian服務器上安裝了用於從URL創建PDF的精彩軟件wkhtmltopdf。我們將生成的PDF流(我希望這是正確的術語)發送給客戶端,我們沒有興趣將它們存儲在服務器端。wkhtmltopdf爲某些網址返回空白頁

我們只從本地URL(在自己的服務器上)生成PDF。但是,由於服務器上有多個站點,所以URL仍然基於域而不是本地IP。

我們的問題是,對於一些本地頁面,我們所得到的只是一個完全空白的頁面(甚至不是PDF)。響應代碼是200,但內容類型是text/html。對於PDF成功傳輸到客戶端的頁面,內容類型爲application/pdf。

我以爲可能在我的PDF生成中出現了問題,所以我運行了與PHP執行完全相同的命令,然後PDF正在成功生成。

我使用this page上的庫來使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返回空白頁?

+0

URL是否正常響應瀏覽器請求?我們可以獲取空白網址進行測試嗎? – Nenotlep

+0

是的,URLs是好的。不幸的是,我無法訪問網頁。我一直在檢查Apache日誌中是否有錯誤,但找不到任何東西。 –

回答

0

原來,問題出在我正在使用的庫中。我無法確切知道問題出在哪裏,但是在成功創建PDF時,wkhtmlpdf類的send方法中的proc_close返回2而不是預期的0。這導致圖書館認爲沒有PDF被創建,並且它只是返回虛假的意思,沒有任何內容被輸出到客戶端。我通過使用PHP的file_exists函數檢查文件是否存在來解決它。