在zend_pdf中生成全尺寸和高质量的图像


Generate full size and good quality of image in zend_pdf

我尝试过类似的东西

public function getPdf()
{
  $imagePath=C:'Users'Hp'Desktop'image.jpg;
  $image = Zend_Pdf_Image::imageWithPath($imagePath);
  $page->drawImage($image, 40,764,240, 820);
  $pdf->pages[] = $page;
  $pdf->save('new.pdf');
}

它成功地生成了带有图像的PDF。但它不能保持图像的质量。即图像的高度和宽度会失真,并显示较小的图像。

有人能帮我解决这些问题吗。我希望在页面上显示的图像应该是全尺寸的。此外,请注意,横向或纵向图像应相应地适合页面。

我怀疑图像变小的另一个原因是因为您使用像素来绘制图像的高度和宽度,但drawImage使用的点会使图像看起来更小,如果您使用像素测量。

在绘制图像之前,可以使用以下代码将像素转换为点:

$imgWidthPts  = $image->getPixelWidth() * 72 / 96;
$imgHeightPts = $image->getPixelHeight() * 72 / 96;
$x1           = 40;
$y1           = 764;
$page->drawImage($image, $x1, $y1, $x1 + $imgWidthPts, $y1 + $imgHeightPts);

Mihai关于300DPI的观点也是有效的,所以如果你使用72DPI的图像,它会显得有点模糊,但这应该考虑到以实际大小绘制它。

要做到这一点,您应该考虑图像质量,因为PDF的DPI为300或更高,在网站或屏幕查看中使用的JPEG具有72 DPI。

PDF引擎将始终尝试将所有数据放入相同大小。这就是为什么你的图像失真和质量不好的原因。

您可以尝试更改图像分辨率:

$image = substr_replace($image, pack("cnn", 1, 300, 300), 13, 5);
// replace the binary info with a new one, 300 DPI X resolution and 300 DPI Y resolution.