Heim  >  Artikel  >  Web-Frontend  >  TCPDF简明教程_html/css_WEB-ITnose

TCPDF简明教程_html/css_WEB-ITnose

WBOY
WBOYOriginal
2016-06-24 11:25:253813Durchsuche

之前用fpdf总觉得fpdf还是不能达到我想要的效果——简单、扩展性强、重用率高,刚好同事在网上找到了tcpdf,这个工具可以算是fpdf的进化版了,最为强大的是,它可以将HTML代码输出成PDF,实在是太强大了。是家意大利的公司开发的( http://www.tcpdf.org/ ),免费开源,官网上可以下载这个类库,下载下来的压缩包里有很多的exsample文件,里面有生成各类PDF的教程,你只要复制一份,然后根据自己的实际需要来修改就行了。

但是,国内有关tcpdf的文档资料实在少得可怜,只有零星的介绍几点有关输出繁体、简体中文的方式:exsample_038.php文件用来测试中文字体,设置字体为 $pdf->SetFont('stsongstdlight', '', 20); 下面我就把自己用TCPDF制作的报表代码教程发出来。好让大家学得轻松一点。

打开压缩包里的exsample文件加中的048号文件,这个文件是专门介绍生成各种table表格的,复制一份。

1.首先你要根据数据库来设计报表的样式,写好HTML代码,要考虑的因素有字段、数据类型以及最大的字符长度。

比如我的数据库,我就给设计成了下面这种,

具体的代码如下:

XML/HTML代码

  1.   
  2.        
  3.        部门 td >   
  4.        EBL td >   
  5.        姓名 td >   
  6.        damon td >   
  7.        工号 td >   
  8.        543564 td >   
  9.        职位 td >   
  10.        程序员 td >   
  11.     tr >   
  12.       
  13.        入职日期 td >   
  14.        2013/02/22 td >   
  15.        申请时间 td >   
  16.        2013/03/09 td >   
  17.        性别 td >   
  18.        男 td >   
  19.        房号 td >   
  20.        402 td >   
  21.     tr >   
  22.       
  23.        原因 td >   
  24.     tr >   
  25.       
  26.        TCPDF是一个用于快速生成PDF文件的PHP5函数包。TCPDF基于FPDF进行扩展和改进。支持UTF-8,Unicode,HTML和XHTML。 td >   
  27.     tr >   
  28. table >   
  29. p >   
  30.   
  31.       
  32.         须知 td >   
  33.     tr >   
  34.       
  35.         通过逻辑地布局文本单元格,您已经用适合打印的格式重新创建了初始的网页。在无需变更网页本身或任何基础数据的情况下,TCPDF 让您将创建 PDF 的支持添加到您现存的 PHP 网页上。 td >   
  36.     tr >   
  37.       
  38.         组长 td >   
  39.         科文 td >   
  40.         部门主管 td >   
  41.         部门经理 td >   
  42.         人事部 td >   
  43.     tr >   
  44.       
  45.         damon td >   
  46.         damon td >   
  47.         damon td >   
  48.         damon td >   
  49.         damon td >   
  50.      tr >   
  51. table >   

接下来,就把这段HTML代码复制到示例中的$tbl变量中,运行就OK了。

2.将下载下来的PDF文件打开,是不是还是发现空白一片?那是因为你使用的是FoxIt Reader或者是Linux操作系统,光是设置字体也没有用。下面,我就来来介绍一下TCPDF如何设置中文字体的。

a.下载中文字体包: http://pan.baidu.com/share/link?shareid=327612&uk=606208636

b.解压后,将字体包中 droidsansfallback.php、droidsansfallback.z以及droidsansfallback.ctg.z 这三个文件复制到fonts目录下。

c.加入设置字体代码:$pdf->SetFont(‘droidsansfallback’, ”, 12);

d.将刚才文件修改好了之后,再运行一次,“当当当”,大功告成。

3.下面我再给出制作PDF中文报表的完整模板,大家只要把你想要做的表格的HTML代码复制到$tbl变量中,就能制作你想要的文件了:

PHP代码

  1. require_once ( '../config/lang/eng.php' );  
  2. require_once ( '../tcpdf.php' );  
  3. // create new PDF document   
  4. $pdf  =  new  TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true,  'UTF-8' , false);  
  5. // set document information   
  6. $pdf ->SetCreator(PDF_CREATOR);  
  7. $pdf ->SetAuthor( 'Nicola Asuni' );  
  8. $pdf ->SetTitle( 'TCPDF Example 038' );  
  9. $pdf ->SetSubject( 'TCPDF Tutorial' );  
  10. $pdf ->SetKeywords( 'TCPDF, PDF, example, test, guide' );  
  11. // set default header data   
  12. $pdf ->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE. ' 038' , PDF_HEADER_STRING);  
  13. // set header and footer fonts   
  14. $pdf ->setHeaderFont(Array(PDF_FONT_NAME_MAIN,  '' , PDF_FONT_SIZE_MAIN));  
  15. $pdf ->setFooterFont(Array(PDF_FONT_NAME_DATA,  '' , PDF_FONT_SIZE_DATA));  
  16. // set default monospaced font   
  17. $pdf ->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);  
  18. //set margins   
  19. $pdf ->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);  
  20. $pdf ->SetHeaderMargin(PDF_MARGIN_HEADER);  
  21. $pdf ->SetFooterMargin(PDF_MARGIN_FOOTER);  
  22. //set auto page breaks   
  23. $pdf ->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);  
  24. //set image scale factor   
  25. $pdf ->setImageScale(PDF_IMAGE_SCALE_RATIO);  
  26. //set some language-dependent strings   
  27. $pdf ->setLanguageArray( $l );  
  28. // ---------------------------------------------------------   
  29. // set font   
  30. //$pdf->SetFont('stsongstdlight', '', 12);   
  31. $pdf ->SetFont( 'droidsansfallback' ,  '' , 12);  
  32. // add a page   
  33. $pdf ->AddPage();  
  34. $pdf ->Write(0,  '报表' ,  '' , 0,  'L' , true, 0, false, false, 0);  
  35. $tbl  =  //这里放HTML代码   
  36. $pdf ->writeHTML( $tbl , true, false, false, false,  '' );  
  37. // ---------------------------------------------------------   
  38. //Close and output PDF document   
  39. $pdf ->Output( 'report' ,  'I' );  
  40. ?>  

附录:TCPDF常用函数的使用说明:

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

页面记得也设为utf-8

AddPage();新建一个pdf文档页面。

Image($file, $x, $y, $w, $h, $type, $link, $align, $resize, $dpi, $palign, $ismask, $imgmask, $border);

注:把图片放语句$pdf->AddPage()之后,而这紧挨着,并且使用绝对坐标定位,即可做背景。

setFont( '字体','控制显示',字号) 设置文字显示样式也可单独使用

setTextcolor(int,int,int)设置文本颜色,三个参数的值必须在0~255之间

setFontSize(int );设置字号

setFillColor(int,int,int) 设置矩形框之类图形的填充颜色,三个参数值必须在0和255之间

输入文字:

单行文本

Cell($w, $h=0, $txt='', $border=0, $ln=0, $align='', $fill=0, $link='', $stretch=0)

Cell(宽, 高, 内容, 边框, 是否换行, 文字对齐, 文字底色,连接, 变宽)

多行文本

MultiCell($w, $h, $txt, $border=0, $align='J', $fill=0, $ln=1, $x='', $y='', $reseth=true, $stretch=0, $ishtml=false, $autopadding=true, $maxh=0)

MultiCell(宽, 高, 内容, 边框,文字对齐, 文字底色, 是否换行, x坐标, y坐标, 变高, 变宽, 是否支持html, 自动填充, 最大高度)

html文字

setHtmlLinksStyle($color=array(0,0,255), $fontstyle='U');

setHtmlLinksStyle(颜色默认蓝色, U有下划线);

addHtmlLink($url, $name, $fill=0, $firstline=false, $color='', $style=-1);

addHtmlLink(超链接地址, 显示文字, 是否有底色, $firstline=false, $color='', $style=-1);

换行

Ln($h='', $cell=false);

Ln(行数, 是否cell);

加密

SetProtection($permissions=array(), $user_pass='', $owner_pass=null);

例如:

$pdf->SetProtection(array('print','modify','copy','annot-forms'), '123658');

图片背景

输出pdf

$pdf->Output(doc.pdf', 'I');/* 默认是I:在浏览器中打开,D:下载,F:在服务器生成pdf ,S:只返回pdf的字符串

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn