LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

fpdf较Zend_Pdf更专业

admin
2012年4月3日 23:14 本文热度 3338

实例 tmp.php


<?php
/**
fpdf是完全独立,不依赖任何组件,只要装了php就可以了
又是免费的,比Zend_Pdf好多了
*/
require_once 'u.php';
//require_once 'extra.php';
$pdf=new PDF();
$pdf->Open();


$pdf->Aliasnbpages();
//添加字体
$pdf->AddFont('calligra','','calligra.php');
$pdf->SetFont('calligra',null,10);
$title='Give Me A Job';
//设置标题头
$pdf->SetTitle($title);
//增加一个页面
$pdf->AddPage();


$tit='My Blog';
//定义一个链接,也可用Write()
$url='http://hi.baidu.com/1babyo';
$pdf->Cell(10,4,$tit,'B',0,'C',0,$url);
$tit='My Email';
$url='mailto:1babyo@163.com';
$pdf->SetX(40);
$pdf->Write(6,$tit,$url);
$y=$pdf->GetY();
//添加图片
$pdf->Image('005.jpg',0,$y+6,210);
//设置文本颜色
$pdf->SetTextColor(255,0);
//设置填充颜色
$pdf->SetFillColor(0,120,10);
$job='Who can give me a job,I am looking forwad to.';
$y=$pdf->GetY();
$w=$pdf->GetStringWidth($job);
$pdf->Rotate(30,6+$w,$y+38);
$pdf->Ellipse($w+70,$y+30,$w-30,2,'F');
$pdf->Rotate(0);
//附加水印
$pdf->RotateText(100,$y+20,$job,30);
$pdf->Ln();
$pdf->SetTextColor();



$d=$pdf->LoadData('c.txt');
$pdf->Table($d,null,2);
$pdf->BookMark('Job');
$title='popup';
//打印文本,并添加至索引
$pdf->PrintArt($title,'popup.txt');
$title='ZendFramework';
$pdf->PrintArt($title,'zf.txt');
$title='Blog Controller';
//$pdf->BookMark($title,1,0);


$pdf->PrintArt($title,'BlogController.php',true);
$title='User Controller';
$pdf->PrintArt($title,'UserController.php',true);
//输出pdf
$pdf->Output();
?>




pdf类 u.php:


<?php
define('FPDF_FONTPATH','../font/');
require '../fpdf.php';
class PDF extends FPDF
{
//Page header
function Header()
{
    global $title;


    //Arial bold 15
    $this->SetFont('Times','B',15);
    //Calculate width of title and position
    $w=$this->GetStringWidth($title)+6;
    $this->SetX((210-$w)/2);
    //Colors of frame, background and text
    //$this->SetDrawColor(0,80,180);
    $this->SetFillColor();
    $this->SetTextColor(220,250,250);
    //Thickness of frame (1 mm)
    $this->SetLineWidth(1);
    //Title
    $this->Cell($w,9,$title,0,1,'C',1);
    //Line break
    $this->Ln(10);
}


//Page footer
function Footer()
{
//Position at 1.5 cm from bottom
$this->SetY(-15);
//Arial italic 8
       $this->SetTextColor(0,255,0);
$this->SetFont('Arial','I',12);
//Page number
$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
}
function AddPage()
{
parent::AddPage();
$this->SetTextColor(220,0,200);
$this->SetFontSize(13);
$this->RotateText(160,4,'Dont leave me alone, baby',-30);
$this->SetTextColor(0,0,230);
$this->SetFontSize(10);
}
function Bookmark($txt,$level=0,$y=0)
{
        $outlines=array();
if($y==-1)
   $y=$this->GetY();
$this->outlines[]=array('t'=>$txt,'l'=>$level,'y'=>$y,'p'=>$this->PageNo());
}


function _putbookmarks()
{
$nb=count($this->outlines);
if($nb==0)
   return;
$lru=array();
$level=0;
foreach($this->outlines as $i=>$o)
{
   if($o['l']>0)
   {
    $parent=$lru[$o['l']-1];
    //Set parent and last pointers
    $this->outlines[$i]['parent']=$parent;
    $this->outlines[$parent]['last']=$i;
    if($o['l']>$level)
    {
     //Level increasing: set first pointer
     $this->outlines[$parent]['first']=$i;
    }
   }
   else
    $this->outlines[$i]['parent']=$nb;
   if($o['l']<=$level and $i>0)
   {
    //Set prev and next pointers
    $prev=$lru[$o['l']];
    $this->outlines[$prev]['next']=$i;
    $this->outlines[$i]['prev']=$prev;
   }
   $lru[$o['l']]=$i;
   $level=$o['l'];
}
//Outline items
$n=$this->n+1;
foreach($this->outlines as $i=>$o)
{
   $this->_newobj();
   $this->_out('<</Title '.$this->_textstring($o['t']));
   $this->_out('/Parent '.($n+$o['parent']).' 0 R');
   if(isset($o['prev']))
    $this->_out('/Prev '.($n+$o['prev']).' 0 R');
   if(isset($o['next']))
    $this->_out('/Next '.($n+$o['next']).' 0 R');
   if(isset($o['first']))
    $this->_out('/First '.($n+$o['first']).' 0 R');
   if(isset($o['last']))
    $this->_out('/Last '.($n+$o['last']).' 0 R');
   $this->_out(sprintf('/Dest [%d 0 R /XYZ 0 %.2f null]',1+2*$o['p'],($this->h-$o['y'])*$this->k));
   $this->_out('/Count 0>>');
   $this->_out('endobj');
}
//Outline root
$this->_newobj();
$this->OutlineRoot=$this->n;
$this->_out('<</Type /Outlines /First '.$n.' 0 R');
$this->_out('/Last '.($n+$lru[0]).' 0 R>>');
$this->_out('endobj');
}


function _putresources()
{
    parent::_putresources();
    $this->_putbookmarks();
}


function _putcatalog()
{
parent::_putcatalog();
if(count($this->outlines)>0)
{
   $this->_out('/Outlines '.$this->OutlineRoot.' 0 R');
   $this->_out('/PageMode /UseOutlines');
}
}




function Body($fichier)
{
    //Read text file
    $f=fopen($fichier,'r');
    $txt=fread($f,filesize($fichier));
    fclose($f);
    //Font


    //Output text in a 6 cm width column
    $this->SetXY(25,25);
    $this->MultiCell(160,5,$txt);
    $this->Ln();
    $this->Ln();
    //Mention
    $y=$this->GetY();
    $this->Text(25,$y,'(over)');


}


function PrintArt($title,$file,$parent=false)
{
    //Add chapter
    $this->AddPage();
if ($parent)
    $this->BookMark($title,1);
else
    $this->BookMark($title);
    $this->Body($file);
    $this->SetTitle($title);
   
}
function LoadData($file)
{
    //Read file lines
    $lines=file($file);
    $data=array();
    foreach($lines as $line)
        $data[]=explode(',',chop($line));
    return $data;
}
function Table($data,$header=null,$scaleX=1)
{
$w=30;
$h=6;
$rowN=count($data);
$colN=count($data[0]);
//offset of table width
$offset=array(0,0,-15,-15);
$tw=$scaleX*($colN*$w+array_sum($offset));


    //Header
if ($header) {
    foreach($header as $k=>$col)
        $this->Cell($scaleX*($w+$offset[$k]),$h+1,$col,1);


}



    //Data
    foreach($data as $r)
    {


        foreach($r as $k=>$c)
            $this->Cell($scaleX*($w+$offset[$k]),$h,$c,'LT');
        $this->Ln();
    }


$x=$this->GetX();
$y=$this->GetY();
$ax=$x+$tw;
$this->Line($x,$y,$ax,$y);
$this->Line($ax,$y-$h*$rowN,$ax,$y);
}
function Ellipse($x,$y,$rx,$ry,$style='D')
{
if($style=='F')
   $op='f';
elseif($style=='FD' or $style=='DF')
   $op='B';
else
   $op='S';
$lx=4/3*(M_SQRT2-1)*$rx;
$ly=4/3*(M_SQRT2-1)*$ry;
$k=$this->k;
$h=$this->h;
$this->_out(sprintf('%.2f %.2f m %.2f %.2f %.2f %.2f %.2f %.2f c',
   ($x+$rx)*$k,($h-$y)*$k,
   ($x+$rx)*$k,($h-($y-$ly))*$k,
   ($x+$lx)*$k,($h-($y-$ry))*$k,
   $x*$k,($h-($y-$ry))*$k));
$this->_out(sprintf('%.2f %.2f %.2f %.2f %.2f %.2f c',
   ($x-$lx)*$k,($h-($y-$ry))*$k,
   ($x-$rx)*$k,($h-($y-$ly))*$k,
   ($x-$rx)*$k,($h-$y)*$k));
$this->_out(sprintf('%.2f %.2f %.2f %.2f %.2f %.2f c',
   ($x-$rx)*$k,($h-($y+$ly))*$k,
   ($x-$lx)*$k,($h-($y+$ry))*$k,
   $x*$k,($h-($y+$ry))*$k));
$this->_out(sprintf('%.2f %.2f %.2f %.2f %.2f %.2f c %s',
   ($x+$lx)*$k,($h-($y+$ry))*$k,
   ($x+$rx)*$k,($h-($y+$ly))*$k,
   ($x+$rx)*$k,($h-$y)*$k,
   $op));
}
function Rotate($angle=0,$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 RotateText($x,$y,$txt,$angle)
{
//Text rotated around its origin
$this->Rotate($angle,$x,$y);
$this->Text($x,$y,$txt);
$this->Rotate(0);
}
}


下载 fpdf-demo.tar.bz2


该文章在 2012/4/3 23:14:34 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved