web-dev-qa-db-ja.com

TCPDFエラー:[画像]画像を取得できません

[〜#〜] tcpdf [〜#〜]とDrupalのprintモジュールを使用してPDFの記事、およびリンクをクリックしてPDFを生成すると、次のエラーメッセージが表示されます。

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

指定された場所にイメージが存在します。私は適用してみました:

allow_url_fopen = On;
allow_url_include = On;

php.iniにありますが、問題を解決できませんでした。

助けてください:(

23
Shafiul

明らかに、「fopen」ラッパーはTCPDFによって使用されていません。

画像のURLを指定すると、TCPDFはcURLを使用して、TCPDFインストールが保存されている「キャッシュ」ディレクトリにダウンロードしようとします(K_PATH_CACHE- constantには必ず含まれています)。

したがって、このディレクトリには、魔法が機能する書き込み権限が必要だと思います。また、cURLを有効にする必要があります。

26
vstm

Linuxの「example.com」サーバーでの接続の処理方法に問題がありました。このため、サーバーで試してみることになります。

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

TCPDFがcurlで画像をダウンロードしようとしても、画像が見つかりませんでしたが、ブラウザで直接開くだけで画像を表示できました(例 http://www.example.com/image.jpg )。

Example.com VirtualHostが127.0.0.1接続を受け入れるように設定し、行「127.0.0.1 example.com」を/ etc/hostsに追加することで問題を解決しました。

8
luissquall
5

Srcが絶対リンクの場合、TCPDFがUnable to get Image:エラーをスローすることがわかりました。相対リンクに変更するだけで、PDFが正常に作成されます。

4
Michael

サイトのdocrootが.htaccessファイルで保護されているステージングサーバーでこの問題が発生しました(検索エンジンのインデックス作成やその他の混乱を防ぐため)

tcpdfはcurlを使用してイメージをフェッチし、ファイルにアクセスできない場合にこのエラーを出します。

それを解決するために、ウェブサーバーからのリクエストを許可するルールを.htaccessに追加しました

Allow from 123.45.6.7.8
3
batigolix

現在の作業ディレクトリでパスを追加してみてください。

$img = getcwd().'/web/bundles/_bundlename_/img/logo.png';
$pdf->Image($base_url.'/'.$node->field_loc_images[0]['filepath'] ,30, 40, 75, 113, 'JPG', '', '', true, 300, '');
2
shashank

フォントのUnicode問題では、次の構文コードを配置する必要があります。

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

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

ページを追加する前に配置してください...

1
jay ralph

drupalでは、モジュールファイルの先頭ではなく関数にtcpdfライブラリを含めるようにしてください。そうしないと、このエラーが発生します。

1
flabel

これも試してみて

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);
}
0
shashank

エラーを展開します。また、base64埋め込み画像でも失敗するようです。これは今私にとって大きな問題です。

0
Dieter Gribnitz

PHP 5.5から5.6にアップグレードした後、画像エラーのために時間を失いました。

私はここで解決策を見つけました @ caligari (受け入れられた答えに対するコメント)そしてそれは私のために問題を修正しました:

次のようにCURLをインストールします。

apt-get install php5-curl && /etc/init.d/Apache2 restart. 
0
Carlo Paglietti

私の場合、私はしようとしました

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

「curl:(60)サーバー証明書の検証に失敗しました。」示されていた。それは単に証明書の問題でした。

0
Viktor Joras