Skripty : Rotace

Popis

Tento skript umožňuje provést otočení textu kolem daného středu.
Metoda pro nastavení rotace je:

Rotate(float angle [, float x [, float y]])
angle
úhel ve stupních.

x
Souřadnice X pro střed otočení. Výchozí hodnota: aktuální pozice.

y
Souřadnice X pro střed otočení. Výchozí hodnota: aktuální pozice.

Rotace ovlivňuje všechny prvky, které jsou vytištěny po volání metody (s výjimkou klikacích oblastí).

Poznámky:

- Pouze displej je měnit. Metody GetX() a GetY() ani mechanismus automatického stránkování nejsou ovlivněny.
- Rotace se nepřenáší ze strany na stranu. Každá stránka začíná nulovou rotací.


Zdrojový kód

<?php
require('fpdf.php');

class PDF_Rotate extends FPDF
{
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();
}
}

?>


Příklad

Zde je příklad, který ukazuje metody RotatedText() a RotatedImage() a využívá je k tisknout textu a obrázku otočeného o 45°.
<?php
require('rotation.php');

class PDF extends PDF_Rotate
{
function RotatedText($x,$y,$txt,$angle)
{
    // Otáčení textu kolem své osy 
    $this->Rotate($angle,$x,$y);
    $this->Text($x,$y,$txt);
    $this->Rotate(0);
}

function RotatedImage($file,$x,$y,$w,$h,$angle)
{
    // Otáčení obrázku kolem svého horního levého rohu
    $this->Rotate($angle,$x,$y);
    $this->Image($file,$x,$y,$w,$h);
    $this->Rotate(0);
}
}


$pdf=new PDF();
$pdf->AddPage();
$pdf->SetFont('Arial','',20);

$pdf->RotatedImage('circle.png',85,60,40,16,45);
$pdf->RotatedText(100,60,'Hello!',45);

$pdf->Output();
?>


Ukázka

rotace.pdf

Download

rotace.zip

Informace

Author: Olivier
License: FPDF