0

これは簡単な答えになると思いますが、私には理解できません。

fpdfとfpdiを使用してpdfを生成するスクリプトがあります。

通常の画像を使用すると、pdfは完全に生成されますが、phpによって動的に生成された画像を使用しようとしています。

$bc = new PrintBarcode('DARP CODE');
$bc->drawVoucher();
$src = $bc->getVoucher();

// image
$src = $bc->getVoucher();

$pdf->Image($src, 22, 94, 100, 15);

これにより、エラーが発生します。

FPDF error: Image file has no extension and no type was specified: Resource id #16

私が行った場合

$barcode = imagejpeg($src);
$pdf->Image($barcode, 22, 94, 100, 15);

おそらく、imagejpegが実際に画像を出力しているのに、画像ヘッダーが設定されているためです。jpegヘッダーが設定されていると、画像が正常に表示されるため、正しい方法を見つけようとしています。

簡単な場合は、画像を生成できる別のスクリプト( `printbarcode.php'など)がありますが、そのスクリプトの内容をこの関数に取り込む方法がわかりません。

$ pdf-> Image($ barcode、22、94、100、15);

4

3 に答える 3

0

$pdf->Image()エラーメッセージから、関数は$srcファイルへのパスであると想定していると思います。あなたが渡しているものはオブジェクトのようです。

イメージをディスクに保存して、そこからロードしてみてください。あなたはほとんどimagejpeg()関数を持っています-php.netのドキュメントを参照してください。ファイルを保存するためのパスを指定します

imagejpeg($img, 'myfile.jpg', 90); // 90 denotes high quality
$pdf->Image('myfile.jpg', 22, 94, 100, 15);
...
unlink('myfile.jpg'); // delete after

または、画像リソースをパラメータとして受け取るfpdfライブラリの関数を探します。

于 2013-01-22T17:48:58.233 に答える
0

PHPのGDライブラリの助けを借りて、このようにする必要があります..

//Create a new image from file or URL
 $img_src = imagecreatefromjpeg($src);

// Output the image
 imagejpeg($img_src);  

// Free up memory
imagedestroy($img_src);
于 2013-01-22T18:00:29.023 に答える
0

画像を操作するために PHP が使用する画像ハンドラーは必要ありません。必要なのは、画像操作の実際の結果、つまり結果ファイルです。パスを使用して、通話imagejpeg($img, '/path/to/some/tmp/dir/file.jpg');に引き渡します$pdf->Image()。その後、PDFを作成した後、一時的に保存された画像を安全に削除できると思います.

于 2013-01-22T17:44:45.817 に答える