【PHP】使用TCPDF导出PDF文件

这篇具有很好参考价值的文章主要介绍了【PHP】使用TCPDF导出PDF文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、安装TCPDF类库

二、安装字体

三、使用TCPDF导出PDF文件


目的:PHP通过TCPDF类库导出文件为PDF。

开发语言及类库:ThinkPHP、TCPDF

效果图如下

【PHP】使用TCPDF导出PDF文件,PHP,第三方类库、接口使用,pdf,php

【PHP】使用TCPDF导出PDF文件,PHP,第三方类库、接口使用,pdf,php

一、安装TCPDF类库

在项目根目录使用composer安装TCPDF,安装完成后会在vendor目录下生成tecnickcom文件夹,就是TCPDF类库

composer require tecnickcom/tcpdf

二、安装字体

有时候导出的文件是乱码,是因为TCPDF不支持中文,所以需要下载中文字体,字体在网上可以搜索下载,把下载好的字体(ttf格式)放到“\tecnickcom\tcpdf\tools\”目录下,在此目录打开CMD,输入

php tcpdf_addfont.php -i .\msyh.ttf

执行成功后,在“\tecnickcom\tcpdf\fonts\”文件夹下生成相应的文件

【PHP】使用TCPDF导出PDF文件,PHP,第三方类库、接口使用,pdf,php

三、使用TCPDF导出PDF文件

TCPDF类库和字体安装好后,就可以引用TCPDF导出PDF文件了

<?php
use tecnickcom\tcpdf\tcpdf;

public function exportPDF(){
    $objPDF = new \TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
	// 是否显示页眉
	$objPDF->setPrintHeader(false);
	// 是否显示页脚
	$objPDF->setPrintFooter(true);
	// 设置页脚的字体
	$objPDF->setFooterFont(Array('msyh', '', '8'));
	// 设置页脚距离底部的距离
	$objPDF->SetFooterMargin('7');
	// 设置默认等宽字体
	$objPDF->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
	// 设置行高
	$objPDF->setCellHeightRatio(1.5);
	// 设置是否自动分页  距离底部多少距离时分页
	$objPDF->SetAutoPageBreak(TRUE, '10');
	$objPDF->setFontSubsetting(true);
	$objPDF->AddPage();
	// 设置字体
	$objPDF->SetFont('msyh', '', 12, '', true);

	// 调用拼接html代码方法
	$pdf_html = $this->pdf_html($info,$list,$title);

	$objPDF->writeHTMLCell(0, 0, '', '', $pdf_html, 0, 1, 0, true, '', true);
	// 输出  四种模式 I输出、D下载、F保存本地、S输出二进制字符串
	$objPDF->Output('test.pdf', 'D');
}

上面pdf_html方法是拼接html代码,里面的HTML代码可以根据自己需要修改。CSS样式并不是所有都支持,但也可以用其他HTML标签的代替,比如说font-weight就不支持,可以使用<b></b>代替。

public function pdf_html($info,$list,$title)
{
	$html = '';
	$html .= '<h2 style="text-align:center;"><b>'.$title.'</b></h2>
				<table style="text-align:right">
				<tr><td>班级:'.$info['grade'].'_'.$info['year'].$info['season'].'</td></tr>
				<tr><td>总人数:'.$info['student'].'; 已交卷:'.$info['cmit'].'</td></tr>
				<tr><td>导出时间:'.date('Y-m-d H:i:s',time()).'</td></tr>
				</table>';

	foreach ($list as $k => $v) {
		
		$html .= '<div>
					【'.$v['type'].'】 第'.($k+1).'题:'.$v['title'].'<br><span style="color: green;">【正确答案:'.$v['answer'].'】</span><b style="color: #1E9FFF"> &nbsp; &nbsp; 正确率:'.$v['percent'].'%</b>
				</div>
				<table  border="1" style="text-align:center">
				    <colgroup>
				      <col width="40%">
				      <col width="10%">
				      <col width="50%">
				      <col>
				    </colgroup>
				    <tr style="background:#f2f2f2; ">
				        <th>选项</th>
				        <th>选择次数 / 人</th>
				        <th>比例</th>
				    </tr> 
			    		<tr>
					        <td style="text-align:left">A:'.$v['option_A'].'</td>
					        <td>'.$v['sel_A'].'</td>
					        <td>'.$v['percent_A'].'%</td>
					    </tr>
					    <tr>
					        <td style="text-align:left">B:'.$v['option_B'].'</td>
					        <td>'.$v['sel_B'].'</td>
					        <td>'.$v['percent_B'].'% </td>
				      	</tr>
				      	<tr>
					        <td style="text-align:left">C:'.$v['option_C'].'</td>
					        <td>'.$v['sel_C'].'</td>
					        <td> '.$v['percent_C'].'% </td>
					    </tr>
					    <tr>
					        <td style="text-align:left">D:'.$v['option_D'].'</td>
					        <td>'.$v['sel_D'].'</td>
					        <td> '.$v['percent_D'].'% </td>
					    </tr>
					    <tr>
					        <td style="text-align:left">E:'.$v['option_E'].'</td>
					        <td>'.$v['sel_E'].'</td>
					        <td> '.$v['percent_E'].'% </td>
					    </tr>
					    <tr>
					        <td style="text-align:left">F:'.$v['option_F'].'</td>
					        <td>'.$v['sel_F'].'</td>
					        <td> '.$v['percent_F'].'% </td>
					    </tr>
					    <tr>
					        <td style="text-align:left">G:'.$v['option_G'].'</td>
					        <td>'.$v['sel_G'].'</td>
					        <td> '.$v['percent_G'].'% </td>
					    </tr>
				    <tr>
				        <th>作答人数:'.$v['cmit_num'].' 人次</th>
				        <th></th>
				        <th></th>
				    </tr> 
				</table><br/>';
	}
	return $html;
}

下一篇:【PHPWrod】使用PHPWord导出word文档https://blog.csdn.net/qq_25285531/article/details/132799282?spm=1001.2014.3001.5502文章来源地址https://www.toymoban.com/news/detail-701698.html

到了这里,关于【PHP】使用TCPDF导出PDF文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PHP Twitter 推特 第三方登录

    twitter登录文档 开发者平台 申请成为开发流程按引导操作就可以了, 但是要注意信息填写要真实完善的信息, 否则容易被拒绝(被拒绝可能不能二次申请, 之前不能, 现在不知道能不能) 目前推特一个号只能开通一个免费应用, 可付费开通多个 设置基础信息 User authentication setting

    2024年04月16日
    浏览(38)
  • 在Vitis IDE中使用第三方库 libtiff 保存 tiff 文件

    一个Vitis IDE 裸机项目,需要将视频帧无损地保存下来 由于每帧的像素数据是 16bit 1通道的 bayer 格式,满足这一需求的图像格式似乎只有 tiff 格式 开源的tiff 库是 libtiff,而在 Vitis IDE 裸机项目中要使用的话就需要交叉编译 Vitis IDE 裸机的cpu是arm v7 cortex a9,用到的编译器是 ar

    2024年02月16日
    浏览(42)
  • ESP32工程中CMake使用及加入第三方SDK库文件

            本文中使用的是乐鑫官方推出的 ESP-IDF v5.1 对 ESP32S3 设备开发,并非是Arduino、Micro-python等第三方工具开发。在ESP-IDF框架中,乐鑫官方已经将 CMake 和 Ninja 编译构建工具 集成到了ESP-IDF中。         ESP-IDF 即乐鑫物联网开发框架,可为在 Windows、Linux 和 macOS 系统平台

    2024年02月20日
    浏览(55)
  • 使用provision创建的arxml文件,导入到第三方工具需要注意哪些方面?

    provision是一款基于AP AUTOSAR的ARXML设计工具,可以帮助您快速创建和配置ARXML文件。 如果您想要将provision创建的ARXML文件导入到第三方工具中,您需要注意以下几个方面: 您需要确认第三方工具支持的AP AUTOSAR版本和provision生成的ARXML文件的版本是否一致。不同版本的AP AUTOSAR可能

    2024年02月13日
    浏览(40)
  • PHP聚合支付网站源码/对接十多个支付接口 第三方/第四方支付/系统源码

    PHP聚合支付网站源码/对接十多个支付接口 第三方/第四方支付/系统源码 内附数十个支付接口代码文件。 下载地址:https://bbs.csdn.net/topics/616764485  

    2024年02月11日
    浏览(52)
  • 【C#】.net core 6.0 使用第三方日志插件Log4net,配置文件详细说明

    欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。 温馨提示:博主能力有限,理解水平有限

    2024年04月12日
    浏览(52)
  • Android将Uri转为路径字符串(适配安卓全版本)并使用第三方应用打开文件(适配Android7.0+)

    做这个功能时在网上找了无数篇例子,有些方法是有问题的,故自己写一篇完整实现的总结,作备忘也作案例。顺便说一句,Android对存储权限的给予真的越来越严格 目录 1.Uri转为路径String以获得文件名  2.获取文件后缀名 3.通过后缀名获取文件MIME类型  4.设置Intent的Uri与权限

    2024年02月19日
    浏览(43)
  • Argis通过Python的Arcpy第三方库进行字段计算、批量将mxd导出为jpg图片、合并数据库

    前言   近来公司有开发Arcgis脚本工具的需求,我就去学了一下用Arcpy来操作Arcgis的数据,今天学习了字段计算,将学习成果记录如下。   arcpy帮助文档传送门:https://resources.arcgis.com/zh-cn/help/main/10.2/ 一、字段计算 1、以python函数的形式进行字段计算   我们打开字段计算

    2024年02月11日
    浏览(41)
  • 鸿蒙加载第三方动态链接库(.so)文件

    在没有正确引用so文件情况下会报出上述错误,正确姿势应该如下 在Android的写法是在main目录下创建jniLibs,然后.so文件复制进去即可,但是在鸿蒙里面要在libs/内放置arm64-v8a和armeabi-v7a两个文件夹的so文件,然后在build.gradle文件 加多一个.so的描述 即可使用

    2024年02月13日
    浏览(38)
  • php+tcpdf生成pdf:中文乱码

    亲测成功,感谢分享! 查看原文 TCPDF是一个生成PDF的不错的库,可惜,官方对包括中文在内的东亚字体支持不怎么样的。 场景:某项目需要根据数据库信息生成pdf格式的发票,考虑采用稳定的tcpdf,虽然还有许多其它选择,但是这个应该是首选,不说原因了。 可是发现一个

    2024年02月09日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包