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

画像が小さくなっているもう 1 つの理由は、描画の高さと幅にピクセルを使用して画像を描画しているが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についてのMihaiさんの指摘も有効なので、72DPIの画像を使うと少し曇って見えますが、これで原寸大で描画できるようになるはずです。

于 2012-08-26T16:48:10.937 に答える
2

PDF の DPI は 300 以上であり、Web サイトや画面表示で使用される 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 に答える