Генерация полного размера и хорошего качества изображения в 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 ответа
Я подозреваю, что другая причина, по которой изображение получается маленьким, заключается в том, что вы рисуете изображение, используя пиксели для высоты и ширины рисунка, но 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, оно будет выглядеть немного облачно, но это должно позаботиться о том, чтобы нарисовать его в реальном размере.
Чтобы это работало, вы должны учитывать качество изображения, так как DPI в формате PDF составляет 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.