2014-02-28 47 views
14

我對mPDF(版本5.7.1)有個小問題。mPDF 5.7.1 - 圖像顯示爲破損[x]

此代碼應生成的圖像文件PDF:

$mpdf = new mPDF(); 
$html = '<img src="https://www.google.pl/images/srpr/logo11w.png"/>'; 
$mpdf->WriteHTML($html); 
$mpdf->debug = true; 
$output = $mpdf->Output(); 
exit(); 

那麼有沒有圖像,但一個[x]代替。

我已經搜索了足夠的結論,它必須這樣做,但我也嘗試過實時路徑的文件。依然沒有。

我沒有試過的唯一的事情是<img src="logo11w.png">並將圖像複製到文件夾中,因爲我不知道應該將文件複製到哪個文件夾logo11w.png

有什麼建議嗎?

+0

MPDF會自動下載的是外部的資源。也許嘗試將PDF寫入磁盤:$ mpdf-> Output(__ DIR__。DIRECTORY_SEPARATOR。'test.pdf','F'); – KoalaBear

+0

好主意,但不夠好...... :(還是沒有。 –

回答

41

我有同樣的問題與正在顯示作爲PNG圖像[X]時,以產生具有MPDF PDF文件。

我說:$mpdf->showImageErrors = true;

後:$mpdf = new Mpdf();

,並得到了錯誤信息:

GD library required for PNG image (alpha channel)#

所以運行apt-get install php5-gd產生一個PNG一個PDF後的工作就像一個魅力!

+0

必須接受你的問題。我將無法檢查結果,但仍幫助我處理mpdf v6.0中的一個非常類似的問題。 奇怪的是,debug = true並不顯示showImageErrors = true的作用。 感謝您的幫助。 –

+0

這真的很有幫助。我運行了'yum install php56w-gd'並重新啓動了我的web服務,這就實現了。如果你使用yum,它也可能是'yum install php-gd'。 – David

+0

此解決方案適用於我。對於PHP 7.0,命令是'sudo apt-get install php7.0-gd' – Nebster

-1

更改爲 在初始化$ html 之前刪除第二行,其當前未定義。 新代碼將爲

$mpdf = new mPDF(); 
$html= "<img src='https://www.google.pl/images/srpr/logo11w.png' alt=''>"; 
$mpdf->WriteHTML($html); 
$mpdf->debug = true; 
$output = $mpdf->Output(); 
exit(); 
+0

那不是問題 - $ html在新的mPDF(); –

+0

然後concat $ html字符串直到WriteHTML函數調用之前被初始化 – user2706194

1

好的。在最後一個問題的評論(14:30)後。這裏使用的是與mPDF 5.4完全相同的代碼。並將其作爲test.pdf保存在腳本目錄中。防火牆問題?

編輯

我有以下目錄/文件:

  • 圖像0​​
    • wallpaper01.jpg
    • wallpaper02.jpg
  • 的index.php(源代碼)

因此,這些圖像文件相對於腳本目錄而言是相對開始的。

require_once __DIR__ . DIRECTORY_SEPARATOR . 'MPDF/mpdf.php'; 

try { 
    $mpdf = new mPDF(); 
    $mpdf->WriteHTML('<img src="images/wallpaper01.jpg" alt="" width="480">'); 
    $mpdf->WriteHTML('<img src="images/wallpaper02.jpg" alt="" width="480">'); 
    $mpdf->Output(__DIR__ . DIRECTORY_SEPARATOR . 'test.pdf', 'F'); 
} catch(Exception $e) { 
    echo $e; 
} 

Fully working example (download)

+0

我試圖在本地文件(我自己的虛擬主機域)上這樣做,所以這些都不是防火牆的問題。 試圖降級到5.4 - 沒有工作,嘗試更改所有者和文件mod - 什麼都沒有。 –

+0

。做一個完整的工作示例,只需將它放在服務器上的目錄中即可 – KoalaBear

+0

*沒有更早的時間 – KoalaBear

13

包含圖片在mPDF中有點棘手。我也有一些問題。我發現了更多類型的問題。

首先,你應該打開調試變量:

$mpdf = new mPDF();  
$mpdf->showImageErrors = true; 

Usualy人沒有安裝GD模塊PHP。在Linux機器上,執行:

sudo apt-get install php5-gd 
sudo service apache2 restart 

在Windows服務器上,文件php_gd2.dll被包含在一個標準的PHP的安裝,但默認不啓用。要啓用它,取消擴展= p​​hp_gd2.dll行在您的php.ini文件(從該行的開頭刪除#)並重新啓動PHP擴展。 [1]

如果你得到這個錯誤,你可能看到[X]圖片:

mPDF error: IMAGE Error (http://www.domain.com/directory/image.jpg): Could not find image file

查詢的網址,如果你的形象存在,如果圖像是可訪問的。如果是,那麼你可以嘗試將絕對URL更改爲相對。你可以嘗試兩個版本:

<img src="directory/image.jpg"> 
<img src="./directory/image.jpg"> 

其實我也有一個PNG格式的問題。將PNG圖像轉換成JPG效果很好。

在mPDF模板中的鏈接應該與整個框架/系統相同。

+0

在我的情況下,相對url工作正常。 – Gyan

2

遷移腳本後,我遇到了同樣的問題。

問題是,mpdf文件夾中的tmp目錄不可寫。我希望它能幫助別人。

0

對我而言,它現在正在運行。希望這會幫助某人。

解決方案:嘗試使用圖片的相對路徑而不是URL。圖像必須託管在同一臺服務器上。

例:/var/www/mysite/image/xyz.jpg