首页 > Web开发 > 详细

PHP使用TPDF

时间:2019-06-17 18:15:40      阅读:182      评论:0      收藏:0      [点我收藏+]
require_once(LIB_PATH . ‘/tcpdf/tcpdf.php‘); //引入库文件
/**
*它允许设置所有方法中使用的页面格式、方向和度量单位(字体大小除外)
*重要提示:请注意,此方法将mb_内部_编码设置为ascii,因此如果您在tcpdf中使用mbstring模块函数,则需要在需要时正确设置/取消设置mb_内部_编码
*Orientation:orientation属性用来设置文档打印格式是“Portrait”还是“Landscape”。 Landscape为横式打印,Portrait为纵向打印
*Unit:设置页面的单位。pt:点为单位,mm:毫米为单位,cm:厘米为单位,in:英尺为单位
*Format:设置打印格式,一般设置为A4
*Unicode:为true,输入的文本为Unicode字符文本
*Encoding:设置编码格式,默认为utf-8
*Diskcache:为true,通过使用文件系统的临时缓存数据减少RAM的内存使用。
*/
$pdf = new TCPDF( ‘P‘, ‘mm‘, ‘A4‘, true, ‘UTF-8‘, false );

// 设置文档信息
$pdf->SetCreator( PDF_CREATOR );//默认:TCPDF,定义文档的创建者。这通常是生成PDF的应用程序的名称。
$pdf->SetAuthor( ‘Nicola Asuni‘ );//定义文档作者
$pdf->SetTitle( ‘TCPDF Example 001‘ );//设置文档标题
$pdf->SetSubject( ‘TCPDF Tutorial‘ );//设置文档主题/描述
$pdf->SetKeywords( ‘TCPDF, PDF, example, test, guide‘ );//设置文档关键字

// 设置默认头数据

//PDF_HEADER_LOGO  设置页眉logo/logoUrl
//LOGO_WIDTH  标题图像徽标宽度  单位(mm)
//HEADER_TITLE 设置页眉标题
//HEADER_STRING 设置页面文本
//tc 页眉文本的RGB数组颜色
//lc 行的RGB数组颜色---页眉下横线颜色
$pdf->SetHeaderData( PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE . ‘ 001‘, PDF_HEADER_STRING, [0, 64, 255], [0, 64, 128] );
//tc 页脚文本的RGB数组颜色
//lc 行的RGB数组颜色---页脚横线颜色 
$pdf->setFooterData( [0, 64, 0], [0, 64, 128] );
//定义默认的单空格字体。默认值[Courier],Courier:这是一款等宽打字机字体(a monospaced typewriter font),所以不被认为是一种字型(typeface)。
$pdf->SetDefaultMonospacedFont( PDF_FONT_MONOSPACED );

//设置页眉的字体
$pdf->setHeaderFont( [PDF_FONT_NAME_MAIN, ‘‘, PDF_FONT_SIZE_MAIN] );
//设置页脚的字体
$pdf->setFooterFont( [PDF_FONT_NAME_DATA, ‘‘, PDF_FONT_SIZE_DATA] );
      
//设置页边空白

//LEFT  左边距
//TOP   上边距
//RIGHT 右边距
//keepmargins(布尔值),如果为真,则覆盖默认页边距
$pdf->SetMargins( PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT );
//设置页眉与上边距之间的距离
$pdf->SetHeaderMargin( PDF_MARGIN_HEADER );
//设置页脚于底边距之间的距离
$pdf->SetFooterMargin( PDF_MARGIN_FOOTER );

//启用或禁用自动分页符模式。启用时,第二个参数是与定义触发限制的页面底部的距离。默认情况下,模式为“开”,边距为2厘米。
//参数$auto(布尔值)布尔值,指示模式应该是打开还是关闭。
//参数$Margin(float)与页面底部的距离。 
$pdf->SetAutoPageBreak( true, PDF_MARGIN_BOTTOM );

// 设置图像比例
$pdf->setImageScale( PDF_IMAGE_SCALE_RATIO );

//设置语言
if (@file_exists( LIB_PATH . ‘/tcpd/examples/lang/chi.php‘ )) {
   require_once(LIB_PATH . ‘/tcpd/examples/lang/chi.php‘);
   $pdf->setLanguageArray( $l );
}


//下载要设置的字体,如名为simfang.ttf,放在./vendor/tecnickcom/tcpdf/tools目录中
//在tools目录中按住shift,点击鼠标右键,点击“在此处打开命令行窗口”,执行语句
//便会在./vendor/tecnickcom/tcpdf/fonts/文件夹下面会生成simfang.ctg.z , simfang.php和simfang.z几个文件
//在调用TCPDF的方法中设置仿宋字体
//$pdf->SetFont(‘simfang‘, ‘‘, 14, ‘‘, false);
// 设置默认字体子集设置模式
//启用或禁用字体子集设置的默认选项。
//@参数$ENABLE(布尔值)如果为真,则默认启用字体子集设置。
$pdf->setFontSubsetting( true );

//设置字体
//dejavusans是一个utf-8 Unicode字体,如果您只需要打印标准的ASCII字符,您可以使用核心字体,如Helvetica或减少文件大小的次数。
//字体可以是标准字体,也可以是通过addFont()方法添加的字体。标准字体使用Windows编码CP1252(西欧)。
//方法可以在创建第一页之前调用,并且字体可以在每页之间保留。
//如果只想更改当前字体大小,则调用setfontsize()更简单。
//注意:对于标准字体,必须可以访问字体度量文件。这有三种可能性:<ul><li>它们在当前目录中(运行脚本所在的目录)<li><li>它们在其中一个目录中,由include_path参数定义。<li><li>它们在由k_path_fonts constant定义的目录中

//@param$family(字符串)系列字体。它可以是由addFont()定义的名称,也可以是标准type1系列之一(不区分大小写)
//@param$style(字符串)字体样式。可能的值是(不区分大小写):默认值为Regular。粗体和斜体样式不适用于未定义的符号和ZapfdingBats基本字体或其他字体。
//@参数$SIZE(float)字体大小(以磅为单位)。默认值是当前大小。如果自文档开始后未指定大小,则取的值为12
//@param$font file(string)字体定义文件。默认情况下,名称是根据族和样式生成的,小写时不带空格。
//@参数$subset(mixed)如果为true,则仅嵌入字体的一个子集(仅存储与所用字符相关的信息);如果为false,则嵌入完整字体;如果为‘default‘,则使用set font subset()设置的默认值。此选项仅对TrueTypeUnicode字体有效。如果要允许用户更改文档,请将此参数设置为false。如果您对字体进行了子集设置,则接收您的PDF的人将需要具有相同的字体才能对您的PDF进行更改。PDF的文件大小也会更小,因为您只嵌入了部分字体。
//@param$out(布尔值)如果为true,则输出字体大小命令,否则只设置字体属性。
$pdf->SetFont( ‘dejavusans‘, ‘‘, 14, ‘‘, true );

// 添加一页
//向文档添加新页。如果页面已经存在,则首先调用footer()方法以输出页脚(如果启用)。
//然后添加页面,根据左边距和上边距将当前位置设置为左上角(如果处于RTL模式,则设置为右上角),并调用header()显示页眉(如果启用)。
//坐标系的原点位于左上角(或右上角,用于RTL),增加的坐标向下移动。

//@参数$方向(字符串)页面方向。可能的值是(不区分大小写)
//文档打印格式是“Portrait”还是“Landscape”。 Landscape为横式打印,Portrait为纵向打印

//@param$format(mixed)用于页面的格式。它可以是:在getpagesizefromformat()中指定的字符串值之一,也可以是在setpageformat()中指定的参数数组。
//纸张大小,如 A4

//参数$keepmargins(布尔值),如果为真,则用当前页边距覆盖默认页边距

//@参数$tocpage(布尔值)如果为true,则将tocpage状态设置为true(添加的页面将用于显示内容表)。
$pdf->AddPage();

//设置文本阴影效果
//@param$params(array)参数数组:启用(布尔值)设置为true以启用阴影;深度(float)以用户单位表示的阴影宽度;深度(float)以用户单位表示的阴影高度;颜色(array)阴影颜色或false以使用笔划颜色;不透明度(float)alpha值:从0(透明)到1(不透明)的实值;混合模式(字符串)混合模式e,以下选项之一:正常、倍增、屏幕、覆盖、变暗、变亮、减色、色斑、强光、柔光、差分、排除、色调、饱和度、颜色、亮度。
$pdf->setTextShadow( [‘enabled‘ => true, ‘depth_w‘ => 0.2, ‘depth_h‘ => 0.2, ‘color‘ => [196, 196, 196], ‘opacity‘ => 1, ‘blend_mode‘ => ‘Normal‘] );

//HTML转pdf
//打印带有可选边框、背景色和HTML文本字符串的单元格(矩形区域)。
//单元格的左上角与当前位置相对应。呼叫后,当前位置移到右边或下一行。<br/>
//如果启用了自动分页符,并且单元格超出了限制,则在输出前将完成分页符。
//重要提示:HTML必须格式良好-在提交之前,请尝试使用HTML之类的应用程序清理它。
//支持的标签有:a、b、blockquote、br、dd、del、div、dl、dt、em、font、h1、h2、h3、h4、h5、h6、hr、i、img、li、ol、p、pre、small、span、strong、sub、sup、table、tcpdf、td、th、thead、tr、tt、u、ul
//注意:所有HTML属性必须用双引号括起来。

//@参数$W(浮动)单元格宽度。如果为0,则单元格将延伸到右边距。
//@参数$H(浮动)单元格最小高度。如果需要,单元格将自动扩展。
//@参数$X(浮动)左上角X坐标
//@参数$Y(浮动)左上角Y坐标
//@要打印的参数$html(字符串)html文本。默认值:空字符串。
//@param$border(mixed)指示是否必须在单元格周围绘制边框。该值可以是一个数字:<ul><li>0:no b order(default)<li><li>1:frame.<li><ul>or a string containing some or a l l of the following characters(in any order):<ul><li>l:left.<li>t:top.<li>r:right.<li>b:bottom.<li><ul>or an array of line styles for each b order group-for example:array(‘l t r b‘=>array(‘width‘=>2,‘cap‘=>‘butt‘、‘join‘=>‘miter‘、‘dash‘=>0‘、‘color‘=>数组(0,0,0)))
//@param$ln(int)指示调用后当前位置的位置。可能的值是:<ul><li>0:to the right(or left for rtl language).<li><li>1:to the beginning of the next line.<li><li>2:below.<li>>放置1等于放置0并在其后调用ln()。默认值:0。
//@param$fill(布尔值)指示单元格背景必须绘制(true)还是透明(false)。
//@参数$reseth(布尔值)如果为真,则重置最后一个单元格高度(默认为真)。
//@参数$Align(字符串)允许文本居中或对齐。可能的值为:<ul><li>l:Left Align.<li>c:Center.<li>r:Right Align.<li>‘‘:Empty String:Left for LTR or Right for RTL.<li>
//@param$autopadding(布尔值)如果为真,则使用内部填充并自动调整以说明行宽。
$pdf->writeHTMLCell( 0, 0, ‘‘, ‘‘, $html, 0, 1, 0, true, ‘‘, true );

//关闭和输出PDF文件
//参数一  保存时的文件名
// Dest:PDF输出的方式。I,默认值,在浏览器中打开;D,点击下载按钮, PDF文件会被下载下来;F,文件会被保存在服务器中;S,PDF会以字符串形式输出;E:PDF以邮件的附件输出
$pdf->Output(‘example_001.pdf‘, ‘I‘);

中文乱码问题
table中不能出现 bgcolor="" 这个属性
(1)html内容中文乱码解决:$pdf->SetFont(‘stsongstdlight‘, ‘‘, 10);(遇到的问题)
(2) SetHeaderData乱码解决:
打开 tcpdf\config\tcpdf_config.php
将define (‘PDF_FONT_NAME_MAIN’, ‘helvetica’);
改为: define (‘PDF_FONT_NAME_MAIN’, ‘stsongstdlight’);
将define (‘PDF_FONT_NAME_DATA’, ‘helvetica’);
改为: define (‘PDF_FONT_NAME_DATA’, ‘stsongstdlight’);


文档打印格式是“Portrait”/“Landscape”。
Landscape为横式打印,Portrait为纵向打印
横打 你如果东西宽的话,你就横着打
纵打 如果长的话,你就纵打

PHP使用TPDF

原文:https://www.cnblogs.com/aoman/p/11040521.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!