2012-12-04 109 views
5

這個問題似乎是TCPDF上的常青樹...
我有一個問題,讓我瘋狂。TCPDF不顯示圖像與writeHTML

我有一個html代碼,我用作我的PDF的「模板」,在這裏我有我的公司徽標。
本地主機(Windows)上的一切工作正常,但是當我在線移動時,圖像不顯示。
注意:我的PDF沒有任何錯誤(即無法獲取圖像錯誤),圖像是簡單的空白!
事實上,如果我點擊PDF圖像上它應該是的圖像的位置,我可以選擇它,Adobe啓用選項「複製圖像」。

很顯然,圖像存在,在這裏,權限是正確的。
如果我嘗試在那裏瀏覽或查看生成的HTML頁面,一切都很好。

這是PHP代碼:

$pdf->SetMargins($params->get('pdfMarginLeft', 15), $params->get('pdfMarginTop', 27), $params->get('pdfMarginRight', 15)); 
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); 
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); 

$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); 

$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); 
$pdf->SetFont('helvetica', '', 8); 
$pdf->AddPage(); 

$pdf->writeHTML($html, true, false, true, false, ''); 

$pdf->lastPage(); 

然後,這是我的HTML代碼(我只是跳過除了像一切):

<img alt="logo black" src="../images/logo_black.png" height="60" width="210" /> 

我試着用URL(相對與絕對)和路徑(相對和絕對),問題仍然存在。 任何想法?

回答

7

由於事情是在本地工作,所以,你可以嘗試從PNG改變圖像類型JPG並相應地修改代碼,並上傳服務器上的JPG後檢查。

+0

該死的,它的工作原理!嗯,我真的想知道什麼是錯的... – tampe125

+2

它可以是一個透明度問題..我不知道.. [這裏是一個類似的職位](http://www.dolibarr。組織/論壇/ 527-錯誤 - 上一個穩定版本/ 19407-TCPDF錯誤),您也可以通過去哪兒有人在暗示在_tcpdf變化\ _config.php _ ..檢查是否適合您的_png_標誌.. –

+0

真的是爲我工作也! –

16

這不是你的問題,但它是一個可能的解決方案,用於在未來的類似問題的人。 確保HTML屬性具有雙引號。

$html = "<img src='...' />"; // This will not work 

$html = '<img src="..." />'; // This will work 
+0

你是對的! TCPDF版本12年6月2日 –

+1

媽的,你救了我的命!男人這是愚蠢的,但是這是爲什麼我的Magento的pdfcustomer代碼沒有人丁自定義屬性的圖像! upvote :) :) – Gogol

+0

oops錯誤..我的意思是渲染:p – Gogol

0

我爲圖像src實現了一個str_replace,現在工作正常。

$html = str_replace("../images", $_SERVER["DOCUMENT_ROOT"] . '/images', $html); 
1

在我來說,IMG標籤不能正常工作,直到我寫完整的文件路徑

不工作

<img src="/pdfrender/XXX.jpg" width="50" height="50"> 

工作(本地主機的例子)

<img src="http://site.local/pdfrender/XXX.jpg" width="50" height="50"> 
+0

謝謝,原來如此! – xandi

+0

請注意,通過這種方式,您的網站統計信息將包含「TCPDF」作爲用戶代理,並增加您服務器上的流量(您必須支付兩次,首先是服務器對自己+ PDF輸出的請求)不想要。 – Roland

1

您可以將圖像鍵入「jpg/png」到base64。 <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgA...."/> 這可能會幫助你!

0

我不得不 '重新保存' 的圖像:

$image = 'images/logo_example.png';  
imagepng(imagecreatefrompng($image),$image); 

然後它的工作。