2012-08-25 59 views
3

我已經試過類似生成全尺寸和圖像的質量好於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與成功的形象。但它不保持圖像的質量。即 圖像的高度和寬度會變形並顯示小圖像。

任何人都可以幫助我解決這些問題。我希望顯示的圖像在頁面上應該是全尺寸的。另請注意,風景或肖像圖片應該適合頁面。

回答

4

我懷疑其他原因圖像現身小是因爲您繪製使用繪圖的高度和寬度像素的圖像,但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的形象,它會顯得有點渾濁,但這應該照顧在實際大小繪製它。

+0

偉大的解決方案,非常感謝! –

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. 
+0

我試過這個,但它會拋出錯誤說r調用成員函數drawImage()在非對象 – Nida

+0

我認爲你應該在臨時文件夾中重新創建圖像,而不是像那樣加載。 –

+0

我沒有收到你。你能否詳細說明一下。 – Nida