[〜#〜] 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
にありますが、問題を解決できませんでした。
助けてください:(
明らかに、「fopen」ラッパーはTCPDFによって使用されていません。
画像のURLを指定すると、TCPDFはcURLを使用して、TCPDFインストールが保存されている「キャッシュ」ディレクトリにダウンロードしようとします(K_PATH_CACHE
- constantには必ず含まれています)。
したがって、このディレクトリには、魔法が機能する書き込み権限が必要だと思います。また、cURLを有効にする必要があります。
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に追加することで問題を解決しました。
PDF htmlで「 http://yourdomain.com/images/your_image.png " 。
Srcが絶対リンクの場合、TCPDFがUnable to get Image:エラーをスローすることがわかりました。相対リンクに変更するだけで、PDFが正常に作成されます。
サイトのdocrootが.htaccessファイルで保護されているステージングサーバーでこの問題が発生しました(検索エンジンのインデックス作成やその他の混乱を防ぐため)
tcpdfはcurlを使用してイメージをフェッチし、ファイルにアクセスできない場合にこのエラーを出します。
それを解決するために、ウェブサーバーからのリクエストを許可するルールを.htaccessに追加しました
Allow from 123.45.6.7.8
現在の作業ディレクトリでパスを追加してみてください。
$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, '');
フォントのUnicode問題では、次の構文コードを配置する必要があります。
// set font
$fontname = $pdf->addTTFfont('../your path here/sampletruetype.ttf', 'TrueTypeUnicode', '', 32);
$pdf->SetFont($fontname, '', <font size value here>);
ページを追加する前に配置してください...
drupalでは、モジュールファイルの先頭ではなく関数にtcpdfライブラリを含めるようにしてください。そうしないと、このエラーが発生します。
これも試してみて
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);
}
エラーを展開します。また、base64埋め込み画像でも失敗するようです。これは今私にとって大きな問題です。
PHP 5.5から5.6にアップグレードした後、画像エラーのために時間を失いました。
私はここで解決策を見つけました @ caligari (受け入れられた答えに対するコメント)そしてそれは私のために問題を修正しました:
次のようにCURLをインストールします。
apt-get install php5-curl && /etc/init.d/Apache2 restart.
私の場合、私はしようとしました
curl -v http://www.example.com/image.jpg
「curl:(60)サーバー証明書の検証に失敗しました。」示されていた。それは単に証明書の問題でした。