在zend_pdf中生成完整大小和高质量的图像

时间:2012-08-25 06:33:58

标签: php zend-framework magento 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。但它不能保持图像质量。即 图像的高度和宽度变形并显示小图像。

任何人都可以帮我解决这些问题。我希望显示的图像在页面上应该是完整的大小。另请注意,横向或纵向图像应相应地适合页面。

2 个答案:

答案 0 :(得分:5)

我怀疑图像出现小的另一个原因是因为您使用像素绘制图像的高度和宽度,但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图像,它会显得有些混浊,但是这应该照顾实际尺寸。

答案 1 :(得分:2)

要实现这一点,您应该考虑图像质量,因为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.