2017-09-29 131 views
0

我試圖用PHP腳本生成圖像,並將它們放入由mPDF庫生成的PDF文件中。PHP腳本生成的mPDF圖像

我克隆了mpdf-examples版本庫,其中包含幾個示例,其中一個包含圖片,鏈接爲https://github.com/mpdf/mpdf-examples,因此您可以看到源代碼。

example04_images.php中,由tiger.php返回的圖像不起作用。

從命令行php example04_images.php > out.pdf執行時,該文件將包含[X]類型的圖像,這意味着它們加載失敗。

從瀏覽器加載腳本時,它會永久加載。

我作曲文件

{ 
    "name": "mpdf/examples", 
    "description": "Example repository for Mpdf HTML to PDF generator", 
    "require": { 
    "ext-gd": "*", 
     "mpdf/mpdf": "7.0.0-beta2" 
    } 
} 

當我刪除的使用.php生成的圖像,PDF格式正確生成的代碼位。只有當我包含這些php生成的圖像時纔會失敗。

php -v是:

PHP 7.0.24-1+ubuntu14.04.1+deb.sury.org+1 (cli) (built: Sep 28 2017 16:33:02) (NTS)

看來,使用PHP生成的圖像適用於很多人,甚至是文件說,這是可能的。但它不適合我。

+0

您使用什麼服務器在瀏覽器中顯示示例? – Finwe

+0

我正在使用PHP Cli。我應該改用別的東西嗎?如果是這樣,爲什麼php cli在這個失敗?這在Heroku上也失敗 –

+0

你的意思是你運行PHP嵌入式服務器'php -S'? Heroku的環境是什麼? – Finwe

回答

0

mPDF在內部通過file_get_contents調用獲取圖像。當使用單線程服務器(如php -S)時,後續請求將停止應用程序。 This SO QA整齊地總結了這種行爲。這就是瀏覽器請求無限期掛起的原因。

mPDF可以在單線程服務器上完成其某些功能,但不是全部。強烈建議使用合適的服務器(Apache,帶PHP-FPM的nginx)。

從命令行運行腳本時,圖像未正確加載很合理。圖像路徑是相對URL,必須由PHP處理才能返回正確的內容。如果沒有後續的HTTP請求,沒有簡單的方法來實現它 - 這超出了簡單的php cli調用的範圍。

要讓示例在CLI中工作,您必須鏈接到真實圖像文件(我相信它在圖像示例中正常工作),或者提供完整的URL到tiger.php腳本,其中腳本將是使用服務器進行處理。