2011-10-05 26 views
21

Tôi đang sử dụng TCPDF với in Drupal module để tạo PDF của bài viết, & kết thúc với thông báo lỗi sau khi tôi nhấp vào liên kết để tạo ra PDF:TCPDF ERROR: [Hình ảnh] Không thể để có được hình ảnh

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

Hình ảnh tồn tại ở vị trí được chỉ định. tôi đã cố gắng áp dụng:

allow_url_fopen = On; 
allow_url_include = On; 

trong php.ini nhưng điều đó không thể giải quyết vấn đề.

Hãy chăm sóc để giúp :(

Trả lời

24

Rõ ràng -wrappers "fopen" không được sử dụng bởi TCPDF.

Nếu bạn cung cấp địa chỉ URL của một hình ảnh, TCPDF cố gắng để tải về nó với cURL vào " bộ nhớ cache "-directory nơi TCPDF của bạn cài đặt được lưu trữ (bạn phải kiểm tra những gì K_PATH_CACHE -constant có chứa để chắc chắn)

Vì vậy, tôi đoán bạn phải có quyền ghi trong thư mục này ma thuật hoạt động. cần bật cURL.

+0

Cảm ơn cho câu trả lời, @vstm. Tôi đã có một vấn đề khác bây giờ: TCPDF in không chính xác. Tôi đang cố gắng để in một cái gì đó với 'Unicode' &' phức tạp-script' (tiếng Bengali) .. bạn có thể đoán Có gì sai? Tôi đã quản lý cài đặt phông chữ .ttf unicode thành công với TCPDF và đặt nó bằng cách sử dụng SetFont() – giga

+3

Nó đã làm việc cho tôi, sau khi int CURL trong máy chủ debian: 'apt-get install php5-curl &&/etc/init.d/apache2 restart' – caligari

+1

Tôi cũng gặp phải vấn đề này, nhưng đó là vì thư mục được bảo vệ bằng mật khẩu và curl không thể truy cập trực tiếp vào thư mục. Đã xóa bảo vệ và nó hoạt động. – tylerpenney

8

Chúng tôi gặp sự cố với cách kết nối được xử lý trong máy chủ "example.com" Linux của chúng tôi. Vì vậy, đây dẫn chúng ta đến thử trên máy chủ:

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

Bất cứ khi nào TCPDF cố gắng để tải về một hình ảnh với curl, hình ảnh không được tìm thấy, tuy nhiên, chúng ta có thể xem các hình ảnh bằng cách chỉ mở nó trực tiếp trong trình duyệt (ví dụ như http://www.example.com/image.jpg).

Chúng tôi giải quyết vấn đề bằng cách đặt VirtualHost example.com để chấp nhận kết nối 127.0.0.1 và thêm dòng "127.0.0.1 example.com" vào/etc/hosts.

+0

cảm ơn bạn đã tiết kiệm thời gian ... – saqibahmad

1

Trong vấn đề unicode font chữ của bạn, bạn cần phải đặt mã cú pháp sau:

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

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

đặt nó trước khi bạn thêm trang ...

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

Khi trả lời bằng mã, tốt nhất là cung cấp ít nhất một lời giải thích nhỏ cùng với mã giải quyết vấn đề để OP (và các khách truy cập khác) có thể hiểu rõ hơn lý do tại sao điều này sẽ hoạt động. – Fluffeh

+0

Cái này hoạt động! Cảm ơn +1 cho bạn. – jned29

0

thử này cũng

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

Chăm sóc để bình luận mã của bạn, tại sao bạn nghĩ rằng điều này là sẽ làm việc? Câu hỏi có một câu trả lời đã được chấp nhận, câu hỏi của bạn thêm vào vấn đề gì? – Yaroslav

2

Tôi đã tìm thấy rằng TCPDF sẽ ném không thể nhận được hình ảnh: lỗi khi src là một liên kết tuyệt đối. Chỉ cần thay đổi thành liên kết tương đối sẽ tạo thành công tệp PDF.

+0

+1 - Điều đó giải quyết được vấn đề của tôi, cảm ơn bạn. – CroiOS

+0

trên ghi chú này, tôi sẽ không hoạt động với https: // và bởi vì tôi đang sử dụng một số mod_rewriting nặng, tôi không thể sử dụng URL tương đối. Vì vậy, việc sử dụng giao thức '//' đã hoạt động. Đối với bất kỳ ai sử dụng CakePHP gặp sự cố này và sử dụng hằng số 'BASE_URL', bạn có thể sử dụng thay vào đó:' str_replace (mảng ('http:', 'https:'), '', BASE_URL) ' –

0

Để mở rộng lỗi. Nó cũng có vẻ thất bại với hình ảnh nhúng base64. Đây là một vấn đề lớn đối với tôi ngay bây giờ.

3

Tôi có vấn đề này trên một máy chủ dàn nơi docroot của trang web được bảo vệ bởi một tập tin .htaccess (để ngăn chặn đánh chỉ số công cụ tìm kiếm và những nhầm lẫn khác)

TCPDF sử dụng curl để lấy hình ảnh và nó mang lại cho này lỗi nếu nó không thể truy cập tệp.

Để giải quyết, tôi đã thêm quy tắc vào.htaccess cho phép yêu cầu từ máy chủ web

Allow from 123.45.6.7.8 
1

Trong drupal, hãy chắc chắn bao gồm thư viện tcpdf trong chức năng của bạn chứ không phải ở đầu tệp mô-đun của bạn hoặc bạn sẽ gặp phải lỗi này.

0

Cố gắng thêm đường dẫn theo thư mục làm việc hiện tại.

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

vui lòng, nhận xét nó –

0

Sau khi tôi nâng cấp PHP 5,5-5,6, tôi bị mất tiếng đồng hồ vì một lỗi hình ảnh,

Tôi tìm thấy giải pháp ở đây từ @caligari (một bình luận về câu trả lời được chấp nhận) và nó cố định các vấn đề đối với tôi :

cài đặt CURL như thế này:

apt-get install php5-curl && /etc/init.d/apache2 restart. 
Các vấn đề liên quan