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

您不需要 PHP 用来操作图像的图像处理程序。您需要的是图像处理的实际结果,即生成的文件。使用imagejpeg($img, '/path/to/some/tmp/dir/file.jpg');并将路径移交给您的$pdf->Image()呼叫。然后在创建 PDF 之后,我认为您可以安全地删除临时存储的图像。

于 2013-01-22T17:44:45.817 回答
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 回答