2011-10-05 102 views
21

我使用TCPDF與Drupal的打印模塊生成的文章PDF,&結束了以下錯誤消息,當我點擊鏈接生成PDF:TCPDF錯誤:[圖片]無法獲取圖像

TCPDF ERROR: [Image] Unable to get image: http://localhost/pathToDrupal/themes/bartik/logo.png

Image存在於指定的位置。 我想申請:

allow_url_fopen = On; 
allow_url_include = On; 
php.ini

但可能解決不了問題。

請關心幫助:(

回答

24

顯然,「FOPEN」 -wrappers不使用TCPDF。

如果提供圖像的URL,TCPDF嘗試與捲曲下載到「緩存「目錄 - 你的TCPDF安裝存儲在哪裏(你必須檢查一下K_PATH_CACHE恆定包含的內容)

所以我想你必須在這個目錄有寫權限,需要啓用cURL。

+0

感謝您的回答,@vstm。我現在有另一個問題:TCPDF打印不正確。我試圖用'Unicode'和'complex-script'(孟加拉語)打印一些東西。你能猜到出了什麼問題嗎? 我已經成功安裝了一個unicode .ttf字體,使用TCPDF並使用SetFont()設置它 – giga

+3

在debian服務器中安裝CURL後,它已經爲我工作了:apt-get install php5-curl &&/etc/init.d/apache2 restart' – caligari

+1

我也遇到過這個問題,但這是因爲該文件夾受密碼保護,curl無法直接訪問該文件夾。刪除了保護,它工作。 – tylerpenney

8

我們在linux「example.com」服務器中處理連接的方式存在問題。因此,這導致我們嘗試在服務器上:

curl -v http://www.example.com/image.jpg 

每當TCPDF嘗試下載與捲曲的圖像時,圖像沒有被發現,不過,我們可以僅通過直接在瀏覽器中打開查看原圖(如http://www.example.com/image.jpg)。

我們通過將example.com VirtualHost設置爲接受127.0.0.1連接並將行「127.0.0.1 example.com」添加到/ etc/hosts來解決了該問題。

+0

感謝您節省了時間...... – saqibahmad

1

在您的字體unicode的問題,你需要把這個代碼的語法:

// set font 
$fontname = $pdf->addTTFfont('../your path here/sampletruetype.ttf', 'TrueTypeUnicode', '', 32); 

$pdf->SetFont($fontname, '', <font size value here>); 

把它放在你面前添加網頁...

2
$pdf->Image($base_url.'/'.$node->field_loc_images[0]['filepath'] ,30, 40, 75, 113, 'JPG', '', '', true, 300, ''); 
+1

在回答代碼時,最好至少提供一點解釋,以解決問題,以便OP (和其他訪問者)可以更好地理解爲什麼這會起作用。 – Fluffeh

+0

這個工程!感謝+1。 – jned29

0

嘗試,這也

foreach($node->field_loc_images as $key=> $s) 
{ 
    $pdf->Image($base_url.'/'.$s['filepath'], $x, $y, $w, $h, 'JPG', '', '', false, 300, '', false, false, 0, $fitbox, false, false); 
} 
+1

小心評論你的代碼,爲什麼你認爲這會工作?這個問題有一個已經被接受的答案,你的問題增加了什麼? – Yaroslav

2

我發現當src是絕對鏈接時,TCPDF會拋出無法獲取圖像:錯誤。只需更改爲相對鏈接即可成功創建PDF。

+0

+1 - 解決了我的問題,謝謝。 – CroiOS

+0

在這個筆記上,我不會使用https://,並且因爲我使用了一些很重的mod_rewriting,所以我無法使用相對URL。所以使用'/ /'協議工作。對於任何使用CakePHP並且使用'BASE_URL'常量的人,你可以使用它:'str_replace(array('http:','https:'),'',BASE_URL)' –

0

擴大錯誤。它也似乎與base64嵌入式圖像失敗。這對我來說現在是個大問題。

3

我在網站的文檔根目錄是由.htaccess文件保護的臨時服務器上這個問題(防止搜索引擎索引和其他混亂)

TCPDF使用捲曲來獲取圖像,並讓此錯誤,如果它不能訪問該文件。

爲了解決這個問題,我添加了一條規則。htaccess的允許從Web服務器請求

Allow from 123.45.6.7.8 
1

在drupal中,一定要在函數中包含tcpdf庫,而不是在模塊文件的頂部,否則會出現此錯誤。

0

嘗試添加當前工作目錄的路徑。

$img = getcwd().'/web/bundles/_bundlename_/img/logo.png'; 
+0

請評論 –

0

後,我升級PHP 5.5到5.6,我失去小時,因爲圖像錯誤,

我發現這裏的解決方案從@caligari(上公認的答案評論),它解決了這一問題對我來說:

安裝捲曲這樣的:

apt-get install php5-curl && /etc/init.d/apache2 restart.