簡體   English   中英

Zend_Pdf使用drawImage()圖像未移到左上角

[英]Zend_Pdf using drawImage() Image not moved to top left corner

我正在使用Zend PDF生成pdf文件,下面在左上角用於創建圖片或徽標,

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

但是圖像顯示在左下角,無論何時增加或減小float值,只有圖像大小都會改變,不會移動到左上角。

謝謝!!

嘗試使用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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM