在FPDF + FPDI中旋转文本

时间:2016-11-23 16:53:15

标签: text rotation fpdf fpdi

我对FPDF + FPDI中的文本旋转有问题... 我找到了一堂课,但没办法。

我需要将第一个文本旋转180°。

到目前为止我的工作代码:     

std::set

非常感谢!

1 个答案:

答案 0 :(得分:1)

我设法使用此url page

中使用的类在我的pdf中旋转文本

基本上,我创建了一个带有FPDI作为父项的函数的类,并在我的代码中导入,而不是

// Your code    
$pdf = new FPDI('P','mm',array(225.37,261.719));
// Import changed
$pdf = new PDF_Rotate('P','mm',array(225.37,261.719));

然后我可以使用

$pdf->SetXY(2, -5);
$pdf->RotatedText(5,250,"Example of rotated text",90);

这里的完整代码: PDF_Rotate.php(从FPDI导入而不是FPDF作为样本)

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 RotatedText($x,$y,$txt,$angle)
    {
        //Text rotated around its origin
        $this->Rotate($angle,$x,$y);
        $this->Text($x,$y,$txt);
        $this->Rotate(0);
    }

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

在另一个文件中,导入该类。

$pdf = new  PDF_Rotate();
$pdf->SetXY(2, -5);
$pdf->RotatedText(5,250,"Example of rotated text",90);