3

我尝试过类似的东西

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。但它不能保持图像质量。即图像的高度和宽度会失真并显示小图像。

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

4

2 回答 2

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);

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

于 2012-08-26T16:48:10.937 回答
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.
于 2012-08-25T08:16:06.977 回答