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

PHP基于TCPDF第三方类生成PDF文件

最近在研发招聘的系统 遇到了这个问题 转换pdf 折腾了很久 分享一下

PHP基于TCPDF第三方类生成PDF文件

最近遇到一个需求,需要根据数据库的字段生成表格式的PDF文件并发送邮箱

第一步、我们先去官网上面去下载tcpdf的类:http://www.tcpdf.org/

或者是从github上面下载:https://github.com/tecnickcom/tc-lib-pdf-page,这个第三方类是免费开源的。

下载下来的之后将TCPDF-main文件夹名字更改为TCPDF,并将该文件夹放入vendor文件夹里面

第二步、我们需要进行自动加载composer,在终端输入composer dump-autoload -o

然后会提示您是否执行,我们输入Y。

第三步、就是在我们项目里进行引入该第三方类,并实例化该类的方法。

需要下载中文字体包:

http://pan.baidu.com/share/link?shareid=327612&uk=606208636

解压后,将字体包中的droidsansfallback.php、droidsansfallback.z以及droidsansfallback.ctg.z这三个文件复制到fonts目录下。

否则生成的PDF文件打开是空白或者是乱码。

我是在model里面进行调用的第三方类,然后在控制器里面直接使用这个方法就可以了。

引入该类并实例化。第二步将我下方的代码复制进去即可,下方的代码其实就是对PDF的格式进行设置,这个可以根据自身情况进行修改。

在PHP中进行编辑html代码:

在生成PDF文件的代码里面加入

这两个红框,一个是设置字体,一个是放HTML代码。

然后在控制器里调用:“generate_pdf_files”这个方法即可。

设置成功后就像下方的图片一样:

下面是TCPDF常用函数的使用说明:

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, ‘UTF-8’, false);

页面记得也设为utf-8

AddPage();新建一个pdf文档页面。

Image($file, $x, $y, $w, $h, $type, $link, $align, $resize, $dpi, $palign, $ismask, $imgmask, $border);

注:把图片放语句$pdf->AddPage()之后,而这紧挨着,并且使用绝对坐标定位,即可做背景。

setFont( ‘字体’,‘控制显示’,字号) 设置文字显示样式也可单独使用

setTextcolor(int,int,int)设置文本颜色,三个参数的值必须在0~255之间

setFontSize(int );设置字号

setFillColor(int,int,int) 设置矩形框之类图形的填充颜色,三个参数值必须在0和255之间

输入文字:

单行文本

Cell($w, $h=0, $txt=‘’, $border=0, $ln=0, $align=‘’, $fill=0, $link=‘’, $stretch=0)

Cell(宽, 高, 内容, 边框, 是否换行, 文字对齐, 文字底色,连接, 变宽)

多行文本

MultiCell($w, $h, $txt, $border=0, $align=‘J’, $fill=0, $ln=1, $x=‘’, $y=‘’, $reseth=true, $stretch=0, $ishtml=false, $autopadding=true, $maxh=0)

MultiCell(宽, 高, 内容, 边框,文字对齐, 文字底色, 是否换行, x坐标, y坐标, 变高, 变宽, 是否支持html, 自动填充, 最大高度)

html文字

setHtmlLinksStyle($color=array(0,0,255), $fontstyle=‘U’);

setHtmlLinksStyle(颜色默认蓝色, U有下划线);

addHtmlLink($url, $name, $fill=0, $firstline=false, $color=‘’, $style=-1);

addHtmlLink(超链接地址, 显示文字, 是否有底色, $firstline=false, $color=‘’, $style=-1);

换行

Ln($h=‘’, $cell=false);

Ln(行数, 是否cell);

输出pdf

$pdf->Output(doc.pdf’, ‘I’);

默认是 I:在浏览器中打开,

D:下载,

F:在服务器生成pdf ,

S:只返回pdf的字符串

相关文章:

PHP基于TCPDF第三方类生成PDF文件

最近在研发招聘的系统 遇到了这个问题 转换pdf 折腾了很久 分享一下PHP基于TCPDF第三方类生成PDF文件最近遇到一个需求,需要根据数据库的字段生成表格式的PDF文件并发送邮箱第一步、我们先去官网上面去下载tcpdf的类:http://www.tcpdf.org/或者是从githu…...

SpringCloud(19):Sentinel定义资源的方式

Sentinel除了基本的定义资源的方式之外,还有其他的定义资源的方式,具体如下: 抛出异常的方式定义资源返回布尔值方式定义资源异步调用支持注解方式定义资源主流框架的默认适配1 抛出异常的方式定义资源 Sentinel中的SphU包含了try-catch风格的API。用这种方式,当资源发生了…...

前端 ES6 之 Promise 实践应用与控制反转

Promise 主要是为解决程序异步处理而生的,在现在的前端应用中无处不在,已然成为前端开发中最重要的技能点之一。它不仅解决了以前回调函数地狱嵌套的痛点,更重要的是它提供了更完整、更强大的异步解决方案。 同时 Promise 也是前端面试中必不…...

LightGBM

目录 1.LightGBM的直方图算法(Histogram) 直方图做差加速 2.LightGBM得两大先进技术(GOSS&EFB) 2.1 单边梯度抽样算法(GOSS) 2.2 互斥特征捆绑算法(EFB) 3.LightGBM得生长策略(leaf-wise) 通过与xgboost对比,在这里列出lgb新提出的几个方面的技术 1.Ligh…...

Science:北京脑研究中心李莹实验室揭示性满足感的分子机制

短暂的社交经历(例如,性经历)可导致内部状态的长期变化并影响社会行为,如交配、攻击。例如,在成功交配射精后,许多物种迅速表现出对交配倾向的抑制有数小时、数天或更长时间,这种效应称为性满足…...

Element UI框架学习篇(三)

Element UI框架学习篇(三) 实现简单登录功能(不含记住密码) 1 准备工作 1.1 在zlz包下创建dto包,并创建userDTO类(传输对象) package com.zlz.dto;import lombok.Data;/* DTO 数据传输对象 用户表的传输对象 调用控制器传参使用 VO 控制器返回的视图对象 与页面对应 PO 数据…...

尚硅谷的尚融宝项目

先建立一个Maven springboot项目 进来先把src删掉&#xff0c;因为是一个父项目&#xff0c;我们删掉src之后&#xff0c;pom里配置的东西&#xff0c;也能给别的模块使用。 改一下springboot的版本号码 加入依赖和依赖管理&#xff1a; <properties><java.versi…...

12 Day:内存管理

前言&#xff1a;今天我们要完成我们操作系统的内存管理&#xff0c;以及一些数据结构和小组件的实现&#xff0c;在此之前大家需要了解我们前几天一些重要文件的内存地址存放在哪&#xff0c;以便我们更好的去编写内存管理模块 一&#xff0c;实现ASSERT断言 不知道大家有没有…...

linux基本功系列之lsof命令实战

文章目录前言一. lsof命令介绍二. 语法格式及常用选项三. 参考案例3.1 显示系统打开的文件3.2 查找某个文件相关的进程3.3 列出某个用户打开的文件信息3.4 列出某个程序进程所打开的文件信息3.5 查看某个进程号打开的文件3.6 列出所有的网络连接3.7 列出谁在使用某个端口3.8 恢…...

基础篇:02-SpringCloud概述

1.SpringCloud诞生 基于前面章节&#xff0c;我们深知微服务已成为当前开发的主流技术栈&#xff0c;但是如dubbo、zookeeper、nacos、rocketmq、rabbitmq、springboot、redis、es这般众多技术都只解决了一个或一类问题&#xff0c;微服务并没有一个统一的解决方案。开发人员或…...

【软件测试】软件测试工作上95%会遇到的问题,你遇到多少?

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 1、测试负责人要进行…...

4.5.4 LinkedList

文章目录1.特点2.常用方法3.练习:LinkedList测试1.特点 链表,两端效率高,底层就是链表实现的 List接口的实现类&#xff0c;底层的数据结构为链表&#xff0c;内存空间是不连续的 元素有下标&#xff0c;有序允许存放重复的元素在数据量较大的情况下&#xff0c;查询慢&am…...

Python之FileNotFoundError: [Errno 2] No such file or directory问题处理

错误信息&#xff1a;FileNotFoundError: [Errno 2] No such file or directory: ../AutoFrame/temp/report.xlsx相对于当前文件夹的路径&#xff0c;其实就是你写的py文件所在的文件夹路径&#xff01;python在对文件的操作时&#xff0c;需要特别注意文件地址的书写。文件的路…...

C语言中耳熟能详的printf与scanf

没有什么比时间更有说服力了&#xff0c;因为时间无需通知我们就可以改变一切了。---余华《活着》大家好&#xff0c;今天给大家分享的是C语言中的scanf与printf函数&#xff0c;一提起这两个函数&#xff0c;大家可能觉得这不就是打印和输入嘛&#xff1f;有什么可以说的&…...

【数据结构】复杂度讲解

目录 时间复杂度与空间复杂度&#xff1a;&#xff1a; 1.算法效率 2.时间复杂度 3.空间复杂度 4.常见时间复杂度以及复杂度OJ练习 时间复杂度与空间复杂度&#xff1a;&#xff1a; 什么是数据结构? 数据结构中是计算机存储,组织数据的方式,指相互之间存在一种或多种特定关…...

JAVA-线程池技术

目录 概念 什么是线程&#xff1f; 什么是线程池&#xff1f; 线程池出现背景 线程池原理图 JAVA提供线程池 线程池参数 如果本篇博客对您有一定的帮助&#xff0c;大家记得留言点赞收藏哦。 概念 什么是线程&#xff1f; 是操作系统能够进行运算调度的最小单位。&am…...

【C++】从0到1入门C++编程学习笔记 - 提高编程篇:STL常用算法(算术生成算法)

文章目录一、accumulate二、fill学习目标&#xff1a; 掌握常用的算术生成算法 注意&#xff1a; 算术生成算法属于小型算法&#xff0c;使用时包含的头文件为 #include <numeric> 算法简介&#xff1a; accumulate // 计算容器元素累计总和 fill // 向容器中添加元…...

【C++】static成员

&#x1f499;作者&#xff1a;阿润菜菜 &#x1f4d6;专栏&#xff1a;C 目录 概念 特性 出个题 概念 声明为static的类成员称为类的静态成员&#xff0c;用static修饰的成员变量&#xff0c;称之为静态成员变量&#xff1b; 用static修饰的成员函数&#xff0c;称之为静态…...

Python Scrapy 爬虫简单教程

1. Scrapy install 准备知识 pip 包管理Python 安装XpathCssWindows安装 Scrapy $>- pip install scrapy Linux安装 Scrapy $>- apt-get install python-scrapy 2. Scrapy 项目创建 在开始爬取之前&#xff0c;必须创建一个新的Scrapy项目。进入自定义的项目目录中&am…...

【DOCKER】容器概念基础

文章目录1.容器1.概念2.特点3.与虚拟机的对比2.docker1.概念2.命名空间3.核心概念3.命令1.镜像命令2.仓库命令1.容器 1.概念 1.不同的运行环境&#xff0c;底层架构是不同的&#xff0c;这就会导致测试环境运行好好的应用&#xff0c;到了生产环境就会出现bug&#xff08;就像…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...