当前位置: 首页 > news >正文

php导出pdf

插件官网:TCPDF 

博主用的是tp6框架 、tcpdf插件

composer require tecnickcom/tcpdf --ignore-platform-reqs 后面是忽略平台要求的参数

---------------中文乱码start------------------

关于中文乱码问题:

网上说的下载字体放入fonts  利用tools生产字体的  亲测不用

找到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');

$pdf->SetFont('stsongstdlight', '', 14, '', true);

stsongstdlight字体,是Adobe Reader的默认简体中文字体,TCPDF中已经内置这个字体的配置文件,我们直接调用就好

---------------中文乱码end------------------

                                         正文开始

引入下载的插件:require  (xxx/tcpdf/tcpdf.php)

完整代码如下:public function exportPdf(){$pdf = new \TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);$pdf->SetCreator(PDF_CREATOR);$pdf->SetAuthor('RoyalsZch');$pdf->SetTitle('123');$pdf->SetSubject('123pdf');$pdf->SetKeywords('TCPDF, PDF, example, test, guide');// set default header data$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 001', PDF_HEADER_STRING, array(0,64,255), array(0,64,128));$pdf->setFooterData(array(0, 64, 0), array(0, 64, 128));// set header and footer fonts$pdf->setHeaderFont(array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));$pdf->setFooterFont(array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));// set default monospaced font$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);// set margins$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);// set auto page breaks$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);// set image scale factor$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);$pdf->SetFont('stsongstdlight', '', 14, '', true);//        $pdf->Output('pdf'.'.pdf', 'D');//        add a page$pdf->AddPage();// 随便写HTML$htmlUrl=app()->getRootPath() . 'public/uploads/1.html';$html=file_get_contents($htmlUrl);// output the HTML content$pdf->writeHTML($html, true, false, true, false, '');
//        $pdf->Image('https://gvrboxwit.obs.cn-east-2.myhuaweicloud.com:443/web/202303/202303301615200163657.png', 15, 140, 75, 113, 'JPG', 'http://www.tcpdf.org', '', true, 150, '', false, false, 1, false, false, false);// reset pointer to the last page$pdf->lastPage();//D是下载,I是在线写入$pdf->Output('royals' . '.pdf', 'D');}

$htmlUrl=app()->getRootPath() . 'public/uploads/1.html';获取h5页面里面内容,写入生成的pdf中(h5大多数格式在生成的pdf中是可以生效的)图片也是可以的

h5demo:

<!DOCTYPE html>
<style>body {width: 200mm;height: 240mm;margin: 15mm auto;padding: 0;font-size: 10.5pt;border: black 1px solid;/*font-family: "simsun";*/}.container {height: 180mm;width: 155mm;margin: 100px auto;}table {letter-spacing: 2px;line-height: 30px;width: 100%;border-collapse: collapse;table-layout: fixed;}.content {margin-top: 40px;}.between {margin-left: 30px;margin-top: 20px;}.between input {width: 300px;margin: 3mm 0;}.foot {margin-top: 100px;}.foot table {letter-spacing: 3.5px;}.qz {margin-top: 30px;}.qz table {line-height: 40px;}.table {float: right;}.foot span {text-decoration: black solid;border-bottom: 1px black solid;}h1 {text-align: center;}
</style><body>
<div class="container"><h1>授权委托书</h1><p><img src="xxxxx" alt="" width="100px" height="100px"></p><div class="content"><table><tr><td>&nbsp;&nbsp;现本人不可撤销的向 ******* 银行</td></tr><tr><td><strong>授权:</strong></td></tr><tr><td style="letter-spacing: 6px">&nbsp;&nbsp;本人因办理 *********** 业务,已经</td></tr><tr><td>向 0000000 公司支付首付款,现委托贵</td></tr><tr><td>行将本人的信用卡(卡号 xxxxxxxxxxx)</td></tr><tr><td>进行启用,并将其余款项 **** 元,</td></tr><tr><td>以透支形式扣收后支付给该公司,入账账户信息如下:</td></tr></table></div><div class="between"><table><tr><td colspan="1" class="table">账户名称:</td><td colspan="4"><input type="text" value="{$info.zhmc|default=$gs_name}" id="zhmc"></td></tr><tr><td colspan="1" class="table">账&nbsp;&nbsp;号:</td><td colspan="4"><input type="text" value="{$info.zh|default=$bank_number}" id="zh"></td></tr><tr><td colspan="1" class="table"><span style="letter-spacing: 11px">开户</span>行:</td><td colspan="4"> **********</td></tr></table></div><div class="foot"><table><tr><td>&nbsp;&nbsp;<span>本人在签署此授权委托书之前,已认真仔细阅读上述内容,清</span></td></tr><tr><td><span>楚知晓并自愿承担由此引发的相关法律责任。</span></td></tr></table></div><div class="qz"><table><tr><td colspan="5"></td><td colspan="4">授权人:</td></tr><tr><td colspan="6"></td><td colspan="3">2023年07月05日</td></tr></table></div></div>
</body>

 

http://www.lryc.cn/news/94555.html

相关文章:

  • 【ECMAScript6_2】字符串
  • 37.RocketMQ之Broker消息存储源码分析
  • RabbitMq应用延时消息
  • 【WEB自动化测试】- 浏览器操作方法
  • VSCode设置鼠标滚轮滑动设置字体大小
  • Spring MVC是什么?详解它的组件、请求流程及注解
  • 基于Spring Boot的广告公司业务管理平台设计与实现(Java+spring boot+MySQL)
  • docker 基本命令安装流程
  • 尚硅谷大数据Flink1.17实战教程-笔记02【Flink部署】
  • 【LeetCode每日一题合集】2023.7.3-2023.7.9
  • java企业工程项目管理系统平台源码
  • 软件设计模式与体系结构-设计模式-行为型软件设计模式-访问者模式
  • 【LeetCode】503. 下一个更大元素 II
  • 使用infura创建以太坊网络
  • TCP/IP协议是什么?
  • python图像处理实战(三)—图像几何变换
  • 学习vue2笔记
  • 【SQL】查找多个表中相同的字段
  • “未来之光:揭秘创新科技下的挂灯魅力“
  • Spring boot MongoDB实现自增序列
  • MyBatis查询数据库【秘籍宝典】
  • 目标检测舰船数据集整合
  • 第一章 Android 基础--开发环境搭建
  • 【LeetCode周赛】2022上半年题目精选集——二分
  • vuejs如何将线上PDF转为base64编码
  • Repo工作原理及常用命令总结——2023.07
  • Python教程(2)——开发python常用的IDE
  • 【lambda函数】lambda()函数
  • ThreeJs CSS3DObject 点击失效问题
  • 飞书深诺、恒生面试(部分)(未完全解析)