2016-04-23 4 views
0

Я использую FPDI для импорта PDF поверх изображения. У меня все работает, но теперь я хочу повернуть изображение. Вот мой код:PHP - FPDI - Повернуть изображение

require('fpdf.php'); 
    require('fpdi.php'); 

    class PDF_Rotate extends FPDI { 

     var $angle = 0; 

     function Rotate($angle, $x = -1, $y = -1) { 
      if ($x == -1) 
       $x = $this->x; 
      if ($y == -1) 
       $y = $this->y; 
      if ($this->angle != 0) 
       $this->_out('Q'); 
      $this->angle = $angle; 
      if ($angle != 0) { 
       $angle*=M_PI/180; 
       $c = cos($angle); 
       $s = sin($angle); 
       $cx = $x * $this->k; 
       $cy = ($this->h - $y) * $this->k; 
       $this->_out(sprintf('q %.5F %.5F %.5F %.5F %.2F %.2F cm 1 0 0 1 %.2F %.2F cm', $c, $s, -$s, $c, $cx, $cy, -$cx, -$cy)); 
      } 
     } 

     function _endpage() { 
      if ($this->angle != 0) { 
       $this->angle = 0; 
       $this->_out('Q'); 
      } 
      parent::_endpage(); 
     } 

    } 

    function RotatedImage($file,$x,$y,$w,$angle) 
    { 
    //Image rotated around its upper-left corner 
    $this->Rotate($angle,$x,$y); 
    $this->Image($file,$x,$y,$w); 
    $this->Rotate(0); 
    } 

    $pdf = new FPDI(); 

    $pdf->AddPage(); 

    //$pdf->Image('template/test.jpg',14,26,150); 
    $pdf->RotatedImage('template/test.jpg',14,26,150,4); 


    //load template 
    $pdf->setSourceFile('template/photo.pdf'); 
    $tplIdx = $pdf->importPage(1); 
    $pdf->SetAutoPagebreak(false, 0); 

    //use the imported page and place it at point 0,0; calculate width and height 
    //automaticallay and ajust the page size to the size of the imported page 
    $pdf->useTemplate($tplIdx, 0, 0, 210.058, 296.926, true); 

    $pdf->Output(); 

Эта линия работает отлично:

$pdf->Image('template/test.jpg',14,26,150); 

Однако если попробовать следующее:

$pdf->RotatedImage('template/test.jpg',14,26,150,4); 

Я получаю сообщение об ошибке: FPDI: RotatedImage не определено.

Я пытаюсь получить FPDF метод Rotate (http://www.fpdf.org/en/script/script2.php), работающий с FPDI (https://www.setasign.com/products/fpdi/about/)

Кто-нибудь удалось это раньше?

ответ

0

Расположите функцию RotatedImage() внутри вашего класса.

Это не определено, потому что он пытается выполнить функцию на $pdf, но в настоящее время он существует вне класса, поэтому он не видит его.

Смежные вопросы