首页 > 编程语言 >thinkphp---电子签章功能开发示例

thinkphp---电子签章功能开发示例

时间:2023-12-09 16:35:41浏览次数:57  
标签:iconv UTF pageNo 示例 Text gbk --- thinkphp pdf

最近在做一个项目,需要开发电子签章的功能,也就是电子合同,下面:

具体思路:利用PDF合成,将所需要的文字,图片,合成到PDF里面。

首先下载 Fpdi 库:

https://gitee.com/meiyouzhanghao/fpdi

放到 extend 里面:

 具体代码示例:

<?php
namespace app\index\controller;
use app\BaseController;

use Fpdi\Fpdi;

class IndexController extends BaseController
{
    public function index()
    {
        return redirect('/index');
    }

    /**
     * test
     */
    public function test()
    {
        // $this->create(); // 生成PDF
        $this->sign();
    }
/** * sign */ public function sign() { $pdf = new Fpdi(); $pdf->AddGBFont(); $file = public_path() . '/pdf/test.pdf'; // 获取页数 $pageCount = $pdf->setSourceFile($file); //遍历所有页面 for ($pageNo = 1; $pageNo <= $pageCount; $pageNo++) { //导入页面 $templateId = $pdf->importPage($pageNo); //获取导入页面的大小 $size = $pdf->getTemplateSize($templateId); //创建页面(横向或纵向取决于导入的页面大小) if ($size['width'] > $size['height']) { $pdf->AddPage('L', array($size['width'], $size['height'])); } else { $pdf->AddPage('P', array($size['width'], $size['height'])); } if ($pageNo == $pageCount) { $imgFile = public_path() . '/pdf/mine.png'; // 图片的 X坐标 Y坐标 宽度 高度 $pdf->Image($imgFile, 95, 85, 50, 50, 'png'); } if ($pageNo == $pageCount) { $signFile = public_path() . '/pdf/sign.png'; $pdf->Image($signFile, 95, 132, 40, 40, 'png'); } $pdf->SetFont('GB', '', 10); if ($pageNo == 1) { // X坐标 Y坐标 $pdf->Text(90, 98, iconv("UTF-8", "gbk", '8')); $pdf->Text(111, 98, iconv("UTF-8", "gbk", '12')); $pdf->Text(142, 98, iconv("UTF-8", "gbk", '2023')); $pdf->Text(164, 98, iconv("UTF-8", "gbk", '12')); $pdf->Text(39, 109, iconv("UTF-8", "gbk", '20')); } if ($pageNo == 2) { $pdf->Text(66, 98, iconv("UTF-8", "gbk", '刘备')); $pdf->Text(66, 109, iconv("UTF-8", "gbk", '330108192238333333')); $pdf->Text(66, 142, iconv("UTF-8", "gbk", '赵子龙')); $pdf->Text(66, 153, iconv("UTF-8", "gbk", '云南职培教育科技有限公司')); } // 水印背景 // $pdf->SetTextColor(211, 211, 211); // $txt = iconv("UTF-8", "gbk", '张三 330192238333333 张三 330192238333333 张三 330192238333333 张三 330192238333333 张三 330192238333333 张三 330192238333333'); // for ($i=2; $i<6; $i++) { // $pdf->RotatedText(15, $i*50, $txt, 30); // } //使用导入的页面 $pdf->useTemplate($templateId); } $pdf->Output('F', 'pdf/results.pdf'); die(); } /** * create */ public function create() { $pdf = new Fpdi(); $pdf->AddGBFont(); $pdf->AddPage(); $pdf->SetFont('GB', '', 10); $txt = <<<EOF 甲方:宇宙有点帅科技有限公司 乙方:    身份证号: 欢迎使用 FPDI 1.5.4!   据报道,目前,天文学家最新发明一种方法“透视”早期宇宙的迷雾,这样便于探测到宇宙早期恒星和星系释放的光线。   观察这些宇宙初期恒星诞生是科学家长期以来的一个目标,因为这将有助于解释宇宙是如何从大爆炸后的虚无境地演变成 138 亿年后现今观察到的复杂宇宙,现在这将是詹姆斯·韦伯太空望远镜和平方公里阵列射电望远镜(SKA)的主要勘测任务之一。   但是詹姆斯·韦伯太空望远镜观测的是红外波长范围,而新一代陆基 SKA 望远镜(预计 2024 年前后完工,真正投入使用将在 2030 年),将通过射电电波研究早期宇宙。   对于当前正在使用的射电望远镜而言,其技术挑战在于通过厚密氢云探测到恒星信号,氢云能更好地吸收光线,从而阻挡人们的观测视野。射电信号失真也会成为干扰因素,因此,探测宇宙初期恒星是现代射电宇宙学面临的重大挑战之一。   例如:天文学家试图探测比银河系信号微弱 10 万倍的系外信号,目前,英国剑桥大学研究人员最新开发一种数学方法,可使他们“透视”原始星云和其他宇宙噪声信号。因此,这将使他们避免由射电望远镜引起信号失真的不利影响。   该观点是宇宙氢分析射电实验(REACH)的一部分,这将允许天文学家通过与氢云的相互作用来观察宇宙初期的恒星,就像我们通过观察雾中阴影来推断景观一样。希望它能提高射电望远镜观测宇宙演变关键时期的质量和可靠性,预计宇宙氢分析射电实验的第一次观测将于今年晚些时候进行。   该研究报告负责人、剑桥大学卡文迪什实验室埃洛伊·德莱拉·阿西多(Eloy de Lera Acedo)博士说:“在宇宙第一批恒星形成的时候,宇宙基本上空荡荡的,主要由氢和氦构成,在引力作用下,这些元素最终聚集在一起,形成了适合核聚变的条件,这将促进第一批恒星的诞生,但是它们被所谓的中性氢云包围,中性氢云能较好地吸收光线,所以人们很难直接探测或者观察氢云后方的光线。”   2018 年,另一支研究小组发表研究结果,暗示可能探测到宇宙最早的光,但当时他们无法重复该实验结果,从而让他们相信最初的研究结果可能源自望远镜的干扰。阿西多博士说:“最初的研究结果需要新的物理学理论进行解释,因为氢气的温度应该比我们理解的宇宙温度阈值低很多,或者无法解释的背景辐射温度升高,可能是众所周知的宇宙微波背景辐射所致,如果我们能确认之前实验中发现的光信号来自于宇宙第一批恒星,那么这项研究的意义将非常巨大。”   为了研究宇宙发展的这段时期,通常被称为“宇宙黎明”,天文学家使用了 21 厘米长信号线,这是早期宇宙氢原子电磁辐射信号,他们寻找一种射电信号,能测量对比氢辐射和氢雾背景辐射之间的差异。   该方法是由阿西多博士和同事使用贝叶斯统计法来探测望远镜干扰和宇宙噪音信号,这样信号就被分离开来,要做到这一点,需要不同领域的最新技术进行验证。   据悉,目前位于南非卡鲁射电保护区的平方公里阵列射电望远镜项目已完成,该地区因具有优越的天空射电观测条件而被选中,这里远离人为制造的射频干扰,例如:电视和调频无线电信号等。   基于对宇宙微波背景辐射(CMB)的研究分析,人们已较深入地理解大爆炸和宇宙初期状况,但是宇宙第一束光线的形成时间仍是宇宙探索史上一个未揭晓的谜团。目前这项最新研究发表在近期出版的《自然天文学杂志》上。 EOF; $pdf->Write(10, iconv("UTF-8", "gbk", $txt)); $pdf->Output('F', 'pdf/test.pdf'); } }

打完收工!

标签:iconv,UTF,pageNo,示例,Text,gbk,---,thinkphp,pdf
From: https://www.cnblogs.com/e0yu/p/17891121.html

相关文章

  • React 之 redux react-redux 使用
    注:官方推荐使用redux-toolkit1、项目准备创建项目npxcreate-react-app项目名称安装reduxnpminstall--saveredux安装react-reduxnpminstall--savereact-redux2、示例:Todo列表入口文件index.jsimportReactfrom"react";importReactDOMfrom"react-......
  • 记 react-redux redux-toolkit
    1、安装npminstall@reduxjs/toolkitreact-redux2、使用2.1创建一个ReduxStoreapp/store.jsimport{configureStore}from'@reduxjs/toolkit'exportconststore=configureStore({reducer:{},})2.2提供ReduxStore来Reactindex.jsimportReactfr......
  • VMware vCenter Server 7.0 Update 3p 下载 - 集中管理 vSphere 环境
    VMwarevCenterServer7.0Update3p下载-集中管理vSphere环境请访问原文链接:https://sysin.org/blog/vmware-vcenter-7-u3/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgVMwarevCenterServer是一款高级服务器管理软件,提供了一个集中式平台来控制vSphere......
  • MBR40200PT-ASEMI肖特基二极管MBR40200PT
    编辑:llMBR40200PT-ASEMI肖特基二极管MBR40200PT型号:MBR40200PT品牌:ASEMI封装:TO-247特性:插件、肖特基二极管正向电流:40A反向耐压:200V恢复时间:5ns引脚数量:3芯片个数:2正向压降:0.70V~0.90V芯片尺寸:130MIL浪涌电流:350A漏电流:10ua工作温度:-65℃~175℃包装方式:100/盘;1800......
  • Kubernetes声明性GitOps持续交付工具-Argo CD
    GitOps持续交付工具-ArgoCD1.ArgoCD简介Argo目前已被CNCF基金会收录,成为毕业项目。Argo站点地址:https://argoproj.github.io/,其中ArgoCD是Argo项目中的一个分支。argoCD文档帮助:https://argo-cd.readthedocs.io/en/stable/ArgoCD是用于Kubernetes的声明性GitOps持续交......
  • 聚合支付项目-05
    4基础技术栈总结Nacos用来干什么?Nacos是阿里巴巴公司开源的项目,它用来实现配置中心和服务注册中心。什么是服务发现?在微服务架构中一个业务流程需要多个微服务通过网络接口调用完成业务处理,服务消费方从服务注册中心获取服务提供方的地址,从而进行远程调用,这个过程叫做服务发现。......
  • 3-运行第一个docker image-hello world
    CentOS7.9下安装完成docker后,我们开始部署第一个dockerimage-helloworld1.以root用户登录CentOS7.9服务器,拉取centos7images命令:dockerpullhello-world[root@centos79~]#dockerpullhello-worldUsingdefaulttag:latestlatest:Pullingfromlibrary/hello-world2db29......
  • K3588芯片助力,全新单板计算机ArmSoM-Sige7震撼发布!
    RK3588芯片助力,全新单板计算机ArmSoM-Sige7震撼发布!近日,我们欣喜地宣布推出一款全新的单板计算机,搭载着强大的RK3588芯片,为用户提供更卓越的计算性能和多样化的应用场景。这一新产品的发布标志着我们在技术创新和产品研发方面取得了重要突破,为用户提供了更为出色的计算体验,Sige7......
  • 7. 2023-11-20 12:29:32,542 [tornado.general :456 ][WARNING ][3052] Got events f
     这个警告表明Tornado检测到了有事件(events)被发送到一个已经关闭的流(stream)。在Tornado中,一个流代表一个请求或响应的数据流。这个警告可能意味着在请求处理的过程中,尝试向已经关闭的流发送了事件。可能的原因和解决方法:异步操作处理不当:在Tornado中,当你处理异步请求时,需......
  • open-print
    1.stage_1print/home/zy/anaconda3/envs/py/bin/python/home/zy/pycharm/project/OpenLongTailRecognition-OLTR/main.pyLoadingdatasetfrom:/home/zy/pycharm/project/ImageNet2012{'criterions':{'PerformanceLoss':{'def_file':&......