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为纵向打印
横打 你如果东西宽的话,你就横着打
纵打 如果长的话,你就纵打
原文:https://www.cnblogs.com/aoman/p/11040521.html