Zend_Pdf с использованием drawImage () Изображение не перемещено в верхний левый угол

Я использую Zend PDF для создания PDF-файла,
Я использовал ниже, чтобы создать изображение или логотип в левом верхнем углу страницы,

$image = Zend_Pdf_Image::imageWithPath('my_image.jpg');
$pdfPage->drawImage($image, 100, 100, 400, 300);

Но изображения, показанные в левом нижнем углу, когда бы я ни увеличивал или уменьшал значение с плавающей точкой, менялся только размер изображения, а не перемещался в верхний левый угол.

Спасибо!!

1

Решение

Попытка визуализировать изображения непосредственно с Zend_Pdf разочаровывает, главным образом потому, что вы должны предоставить функции drawImage () координаты всех четырех углов области, в которую вы хотите поместить изображение, и помните, что система координат имеет свое начало в нижнем левом углу, не верхний левый угол. Если вы неправильно укажете координаты, вы получите изображения, перевернутые с ног на голову, с неправильным соотношением сторон и т. Д.

У меня есть обертка, которую я использую при работе с Zend_Pdf, Я вырвал приведенный ниже код из оболочки и попытался настроить его так, чтобы он работал автономно для вас. Я не тестировал этот код, но, надеюсь, он все еще служит полезной иллюстрацией того, как решить вашу проблему.

function image( $page, $filename, $x_mm, $y_mm, $w_mm = 0 )
{
$paperHeight = 297; // For this example, we're using a paper size of A4 in portrait

$size = getimagesize( $filename );
$width = $size[0];
$height = $size[1];

if ( $w_mm == 0 )
{
$w_mm = pointsToMm( $width );
}

$h_mm = $height / $width * $w_mm;

$x1 = mmToPoints( $x_mm );
$x2 = mmToPoints( $x_mm + $w_mm );
$y1 = mmToPoints( $paperHeight - $y_mm - $h_mm );
$y2 = mmToPoints( $paperHeight - $y_mm );

$page->drawImage( Zend_Pdf_Image::imageWithPath( $filename ), $x1, $y1, $x2, $y2 );

return $h_mm;
}

function pointsToMm( $points )
{
return $points / 72 * 25.4;
}

function mmToPoints( $mm )
{
return $mm / 25.4 * 72;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]