php导出pdf

news2024/11/24 14:22:33

插件官网: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.coloradmin.cn/o/719380.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux之系统管理

系统管理 Linux中的进程和服务 计算机中&#xff0c;一个正在执行的程序或命令&#xff0c;被叫做“进程”&#xff08;process&#xff09;。 启动之后一直存在、常驻内存的进程&#xff0c;一般被称作“服务”&#xff08;service&#xff09; service 服务管理&#xff…

GaussDB OLTP云数据库配套工具DDM

目录 一、前言 二、DDM定义 三、DDM业务架构 四、为什么需要DDM? 五、DDM特性 六、DDM应用场景 一、前言 现在越来越多的企业应用在逐步向云平台迁移&#xff0c;同时这对云平台带了一个严峻的考验和挑战。但针对华为云GaussDB数据库&#xff0c; 我们在生态方面做了比…

利用iptables + zabbix-agent 监控进程端口流量

这几天部署了一台ARM架构的linux系统的监控&#xff0c;服务器系统上没有任何工具可以获取数据来获取端口流量&#xff0c;yum&#xff0c;apt-get软件包管理工具都没有&#xff0c;所以想获取数据比较困难。 最终决定使用iptables来添加几条指定端口的规则来统计入站流量和出站…

电子时钟制作(瑞萨RA)(7)----按键修改数码管时间

概述 前几节课程已经单独驱动了数码管和RTC&#xff0c;同时已经整合成了能够用数码管显示具体时间&#xff0c;但是无法修改时间&#xff0c;这节就来配置使用按键修改具体的日期。 硬件准备 首先需要准备一个开发板&#xff0c;这里我准备的是芯片型号R7FA2E1A72DFL的开发…

【花雕】全国青少年机器人技术一级考试备考实操搭建手册9

随着科技的不断进步&#xff0c;机器人技术已经成为了一个重要的领域。在这个领域中&#xff0c;机械结构是机器人设计中至关重要的一部分&#xff0c;它决定了机器人的形态、运动方式和工作效率。对于青少年机器人爱好者来说&#xff0c;了解机械结构的基础知识&#xff0c;掌…

记录Maven 依赖包版本号奇奇怪怪的问题 - okhttp3、okio 版本指定无效

问题背景 SprintBoot项目使用Okhttp 封装SDK common-http&#xff0c;根据官网使用Maven导入JavaSDK <dependency><groupId>io.github.admin4j</groupId><artifactId>http</artifactId><version>0.7.4</version> </dependency&…

Vue 数据双向绑定

双向数据绑定 : 通过前面学习知道 Vue 是数据驱动的&#xff0c;数据驱动有一个精髓之处是数据双向绑定&#xff0c; 即当数据发生变化的时候&#xff0c;视图也就发生变化&#xff0c;当视图发生变化的时候&#xff0c;数据也会跟着同步变化。&#xff08;就是mvvm数据发生变化…

MyCat2 使用教程(一)初始安装

MyCat2 使用教程&#xff08;一&#xff09;初始安装 Mycat2是Mycat社区开发的一款分布式关系型数据库&#xff08;中间件&#xff09;。它支持分布式SQL查询&#xff0c;兼容MySQL通信协议&#xff0c;以Java生态支持多种后端数据&#xff0c;通过数据分片提高数据查询处理能…

【C++】5.多线程:ThreadPoll线程池实现

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍ThreadPoll线程池实现。 学其所用&#xff0c;用其所学。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次更新不迷路…

Web3.0 在中国市场的规模如何?其特点有什么?

随着区块链技术的不断发展和普及&#xff0c;Web3.0 作为下一代互联网的发展趋势&#xff0c;在中国市场也逐渐受到了关注和应用。那么&#xff0c;Web3.0 在中国市场的规模如何&#xff1f;其特点又有哪些呢&#xff1f; 首先&#xff0c;让我们来看一下 Web3.0 在中国市场的规…

Python3,Pandas这4种高频使用的筛选数据的方法,不得不说,确实挺好。

Pandas数据筛选方法 1、引言2、4种高频使用数据筛选方法2.1 布尔索引2.2 isin()方法2.3 query()方法2.4 loc[]方法 3、总结 1、引言 小屌丝&#xff1a;鱼哥&#xff0c;share一下 数据筛选的方法呗 小鱼&#xff1a;Excel就可以啊 小屌丝&#xff1a;我要用Pandas 小鱼&#…

0073. 矩阵置零

73. 矩阵置零 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;解法一&#xff1a;构造一个同等规模的二维数组&#xff0c;即所谓的m*n解法二&#xff1a; int row[] new int[m]; int col[] new int[n];解法三&#xff1a;常数量级 参考代码&#xff1a; 原题…

软件测试技能,JMeter压力测试教程,请求头部自动签名带上X-sign参数(二十二)

一、前言 接口请求 body 带有 sign 签名参数&#xff0c;sign 签名是根据请求 body 除去 sign 本身参数后&#xff0c;拼接请求参数最后 md5 加密生成的 前面一篇是把 sign 前面参数放到请求的 body 里面&#xff0c;这篇继续讲把签名参数放到请求头部的情况 二、实现方式 …

3Ds Max坐标轴切换,使用物体的世界坐标和本地坐标之间切换

标题&#xff1a;当挪动物体的时候想使用&#xff08;本地&#xff09;/&#xff08;世界&#xff09;坐标移动 官方文档 https://help.autodesk.com/view/3DSMAX/2023/CHS/?guidGUID-0F3E2822-9296-42E5-A572-B600884B07E3官方文档 使用“参考坐标系”列表&#xff0c;可以…

怎么把音乐的伴奏提取出来?分享几个方法给大家!

歌曲伴奏提取是一种将歌曲中的人声去除&#xff0c;获得只含伴奏的音乐文件的方法。这项技术可以广泛应用于伴唱、演奏、混音等领域。以下将详细介绍四种常用的歌曲伴奏提取方法&#xff0c;并提供记灵在线工具的使用说明&#xff0c;让您能轻松进行伴奏提取。 一、使用记灵在线…

Linux下载不同版本的gcc与g++并编译,演示安装gcc11

1. 引言 系统: ubuntu 1804点我进入清华源-GCC链接: https://mirror.tuna.tsinghua.edu.cn/gnu/gcc/ 2. 下载编译指定版本gcc 2.1 下载一个低版本g 为了保证后续安装gcc能编译通过&#xff0c;且安装g同时也会安装gcc&#xff01; sudo apt-get install g2.2 下载指定gcc…

KD06丨超级趋势线第4版大升级

大家好&#xff0c;今天我们来分享可达鸭策略最后一期——超级趋势线第4版&#xff0c;进出场自适应大升级。 从2021年开始&#xff0c;我开始分享超级趋势线系列策略。在最初超级趋势线主体构造不断改造&#xff0c;到加入过滤&#xff0c;到出场迭代等等&#xff0c;历经大版…

Vue中的el-date-picker时间选择器的使用

1、value-format属性设置需要什么格式的时间 2、type类型选择datetime、date 年月日时分秒 <el-date-pickervalue-format"yyyy-MM-dd HH:mm:ss"v-model"excelRuleForm.startTime"type"datetime":placeholder"选择开始时间"> &…