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

php生成PDF文件(FPDF)

FPDF即“Free PDF”,FPDF类库提供了基本的PDF创建功能,其源代码和使用权是免费的。

PDF格式文档优势
通用:PDF文档在UNIX和Windows系统均可正常使用。
安全:PDF文档可设置为只读模式,并且可以添加密码等保护措施。
美观:PDF文档可以很大程度上兼容中文编码,并且保留当前页面排版。
精巧:大多数情况下,生成PDF文档会减小文件体积。
FPDF类库下载
FPDF类库下载地址: ​ ​http://www.fpdf.org/​​
FPDF类库中文插件下载地址: ​ ​http://www.fpdf.org/download/chinese.zip​​
FPDF类库配置
下载FPDF文件。
将下载压缩文件解压到项目根目录下。
在项目中引用FPDF类库(如下代码)。

<?php
define('FPDF_FONTPATH','font/');
require_once('fpdf/fpdf.php');
?>

FPDF类库的具体操作

创建对象

new FPDF([string page-orientation [, string measure-unit [, string page-format]]]);/*  page-orientation:可选参数,表示PDF文档为横向或纵向,默认 P取值:P:纵向 L:横向measure-unit:可选参数,表示计量单元,默认 mm取值:pt:点     mm:毫米       cm:厘米       in:英寸page-format:可选参数,纸张类型,默认 A4取值: A4、A5、Letter等
*/

添加新页

void AddPage([string page-orientation]);
/*  page-orientation:可选参数,表示PDF文档为横向或纵向,默认 P取值:P:纵向 L:横向
*/

设置字体

void SetFont(string font [, string style [, float size]]);
/*font:表示字体;style:可选参数,表示样式,默认为普通样式;取值:B:粗体     I:斜体        U:下划线size:可选参数,表示字体大小,默认为12pt;
*/

增加单元格

void Cell(float width, float height, string txt, int border, int ln, string align, boolean fill, string link);
/*width:增加单元格宽度。height:增加单元格高度。str:放置在单元格中的文本。border:单元格边框。ln:换行高度,默认为0,即换一行。align:对齐方式,默认居左,R时居右,C时居中。fill:是否颜色填充,默认false。link:添加链接,默认无链接.* Cell()函数是FPDF中输出文字的主要方式之一。
*/

输出文档

String Output([string name [, string dest]]);
/*name:可选参数,表示要储存的文件名。dest:可选参数,操作内容。取值:I:将PDF文档直接在浏览器中显示。D:下载PDF文档。F:保存为本地文件。S:返回一个字符串值。
*/

插入图片

void Image(string file, float x, float y float width, float height);
/*file:图片路径。x:图片位置的横坐标。y:图片位置的纵坐标。width:图片宽度。height:图片高度。
*/

解决中文乱码问题

下载FPDF中的中文插件chinese.php文件,创建​​PDF_Chinese()​​对象。
将页面编码设置为GB2312或使用​​iconv()​​函数改变字符串编码方式。

/*示例代码如下*/
<?php
require_once('fpdf/chinese.php');
$pdf=new PDF_Chinese('P','mm','A4');
$pdf -> AddGBFont ('GB',iconv("UTF-8","gbk",'微软雅黑'));
$pdf -> AddPage ();
$pdf -> SetFont ('GB', '', 20);
$pdf -> Cell(0,0,iconv("UTF-8","gbk",'你好,世界!'));
$pdf -> Write (5, iconv("UTF-8","gbk",'你好,世界!'));
$pdf -> Output();
?>

设置页眉和页脚
通过重写FPDF类中的​​Header()​​ 方法和​​Footer()​​ 方法设置页眉和页脚。

<?php
require_once('fpdf/chinese.php');
class PDF extends PDF_Chinese
{function Header(){$this->SetFont('GB','',10);$this->Write(10,iconv("UTF-8","gbk",'这是页眉!'));$this->Ln(20);}function Footer(){$this->SetY(-15);$this->SetFont('GB','',10);$this->Cell(0,10,iconv("UTF-8","gbk",'这是页脚!'));}
}
$pdf=new PDF('P','mm','A4');
$pdf -> AddGBFont ('GB',iconv("UTF-8","gbk",'微软雅黑'));  
$pdf -> AddPage ();  
$pdf -> SetFont ('GB', '', 20);  
$pdf -> Cell(0,0,iconv("UTF-8","gbk",'你好,世界!'));
$pdf -> Write (5, iconv("UTF-8","gbk",'你好,世界!'));  
$pdf -> Output();  
?>

设置/获取某元素在页面中的位置

void setX(float x);//设置某元素在页面的X坐标,单位为mm。如x为负数,则表示自页面右端向左的距离。
void setY(float y [, boolean resetX]);//设置某元素在页面的Y坐标,单位为mm。如y为负数,则表示自页面底部向上的距离。若可选参数resetX为真则重置X坐标。
void setXY(float x, float y);//设置某元素在页面的(X,Y)坐标,规则如上,定位Y时不重置X坐标。
float getX();//获得某元素当前X坐标。
float getY();//获得某元素当前Y坐标。

输出字符串

void Write(float h, string txt [, mixed link]);
/*h:定义字符串的行高。txt:指定输出字符串。link:可选参数,设置链接。
*/

换行

void Ln([float h]);
//h:设置行高,默认值为最后输出的行的高度。

正文输出

void MultiCell(float width, float height, string txt, int border, string align, boolean fill);
/*width:单元格宽度。height:单元格高度。txt:放置在单元格中的文本。border:单元格边框,默认为0。align:对齐方式。默认居左,R=居右,C=居中。fill:是否颜色填充。默认false。* MultiCell()函数是FPDF输出大段文字的主要方法,可自动换行。
*/

绘制表格
利用​​Cell()​​函数循环创建单元格,最终组成表格。

<?php
require_once('fpdf/chinese.php');
$pdf = new PDF_Chinese('P','mm','A4');
$pdf -> AddGBFont();
$pdf -> AddPage();
$pdf -> SetFont('GB','',14);
$header = array('姓名','年龄','性别','工资');
$data = array();
$data[0] = array('小张','24','男','5,000.00');
$data[1] = array('小王','22','女','4,000.00');
$width = array(40,40,40,40);
for($i=0;$i<count($header);$i++){$pdf -> Cell($width[$i],6,iconv("UTF-8","gbk",$header[$i]),1);
}
$pdf -> Ln();
foreach($data as $row){$pdf -> Cell($width[0],6,iconv("UTF-8","gbk",$row[0]),1);$pdf -> Cell($width[1],6,iconv("UTF-8","gbk",$row[1]),1);$pdf -> Cell($width[2],6,iconv("UTF-8","gbk",$row[2]),1);$pdf -> Cell($width[3],6,iconv("UTF-8","gbk",$row[3]),1);$pdf -> Ln();
}
$pdf -> Output();
?>

注意事项
部分资料中含有FPDF类库的​​Open()​​方法,但实际上类库中并不包含。使用​​Open()​​方法将会造成错误。
使用FPDF类生成PDF文件时,编码格式应设置为GB2312(或GB相关编码),否则即使继承了PDF_Chinese类依然是乱码。
火狐浏览器无法直接将创建的PDF文档内容显示在浏览器,仅提供下载选项。

相关文章:

php生成PDF文件(FPDF)

FPDF即“Free PDF”&#xff0c;FPDF类库提供了基本的PDF创建功能&#xff0c;其源代码和使用权是免费的。 PDF格式文档优势 通用&#xff1a;PDF文档在UNIX和Windows系统均可正常使用。 安全&#xff1a;PDF文档可设置为只读模式&#xff0c;并且可以添加密码等保护措施。 美…...

(接口测试)day01接口测试理论 http理论 接口测试流程 接口文档解析

一.接口测试理论 1.接口和接口测试 服务器为客户端开了一个验证接口&#xff08;接口本质&#xff1a;函数方法&#xff09;客户端向服务器传送的消息可以相当于函数的参数&#xff0c;接口是用来让客户端传递数据的 接口&#xff1a;相当于开了一个通道 当服务器要给客户端响…...

Telegram——Bot 机器人/小程序入门指南

一、Bot 介绍 在 TG 中,机器人可以用于接收和发送消息、管理群组(在有权限的情况下可以封禁用户、删除消息、置顶消息等)、通过API进行编程操作、使用 Inline 查询功能在不同的聊天室中提供查询服务、创建自定义键盘按钮、发出账单并收款、接入小程序游戏等。 然而,Bot 默…...

tauri build 后界面样式失效

其中一种情况&#xff1a;你为了使用 convertFileSrc 来加载本地资源&#xff0c;按照官方文档在 tauri.conf.json 中 设置了 tauri.security.csp 为 "default-src self; img-src self asset: https://asset. Localhost"&#xff0c;恰好你在组件中编写了一部分的内联…...

打印自然常数E

自然常数E 自然常数&#xff0c;符号e&#xff0c;为数学中一个常数&#xff0c;是一个无限不循环小数&#xff0c;且为超越数&#xff0c;其值约为2.718281828459045。它是自然对数函数的底数。 我们打印表达式(11/x)的x次方的值以及获取第一次大于2.718的正整数 新建C#控制…...

澳鹏干货 | 大语言模型的上下文窗口 (Context Windows)

大语言模型&#xff08;LLMs&#xff09;极大地提升了人工智能在理解和生成文本方面的能力。其中一个影响其效用的重要方面是“上下文窗口”&#xff08;Context Windows&#xff09;—— 这个概念直接影响着模型接收和生成语言的有效性。 本期澳鹏干货将深入探讨上下文窗口对…...

为什么k8s不支持docker-kubernetes

为什么Kubernetes不再支持Docker&#xff1f; 在Kubernetes 1.20版本之后&#xff0c;Kubernetes宣布逐步停止对Docker作为容器运行时的支持。这一改变在容器管理领域引起了广泛关注。许多人不禁疑惑&#xff1a;Kubernetes与Docker一向密切合作&#xff0c;为何会做出这样的决…...

数据结构编程实践20讲(Python版)—17散列

本文目录 17 散列(Hashing)S1 说明特点应用领域S2 示例:字符串哈希S2 示例:文件、图片哈希S3 应用1:食品安全追溯S4 应用2:在线内容版权保护S5 应用3:社交媒体内容审核往期链接 01 数组02 链表03 栈04 队列05 二叉树06 二叉搜索树07 AVL树08 红黑树09 B树10 B+树11 线段…...

看了大厂用AI审简历,我才发现社会的残酷真相!今年的秋招太可怕了

太可怕了&#xff01;今年秋招&#xff0c;大厂竟然引进黑科技—— AI 面试、AI 智能分析简历&#xff0c; 这让打工人以后咋敢写精通 Office 三件套&#xff0c;就怕被 AI 一眼识破 劝你现在掌握 AI 技能&#xff0c;真的不是说说而已&#xff01; 微软的最新职场 AI 统计数…...

京东大模型革命电商搜推技术:挑战、实践与未来趋势

大模型对搜推技术产生了深远的影响&#xff0c;极大地推动了搜推技术的演进趋势&#xff0c;使得搜推更加的智能化和个性化&#xff0c;然而在搜推中引入大模型时同样面临一系列的挑战&#xff0c;例如商品知识的幻觉&#xff0c;复杂查询的理解&#xff0c;个性化商品推荐&…...

深入学习二叉树(BinaryTree)(纯小白进)

目录&#xff1a; 一、 前言二、 正文2.1、 树的概念2.1.1、 树的结构2.1.2、 树的小知识 2.2、 认识二叉树2.2.1、 二叉树的概念2.2.2、 特殊的二叉树 2.3、 实现二叉树2.3.1、 结构2.3.2、 节点数2.3.3、 树深度2.3.4、 前、中、后序遍历 销毁2.3.4.1、 前序遍历2.3.4.2、 中…...

诗风秦韵诗词学习画廊宣言

诗风秦韵诗词学习画廊宣言 弘扬传统传承文明&#xff0c;奋斗路上不断前进&#xff0c;青春不朽梦想扬帆&#xff0c;华夏赞歌我心飞扬...

Cannot determine local hostname

1. 问题与解答 报错&#xff1a; o.s.cloud.commons.util.InetUtils : Cannot determine local hostname 可能原因&#xff1a; 缺少一个logback.xml 2. logback日志文件介绍 2.1 logback结构与组成 logback.xml 文件是 Logback 的核心配置文件&#xff0c;其基本…...

电工课堂-对晶闸管移相控制触发要求

晶闸管移相控制触发的要求主要包括触发信号的同步性、移相范围、输出功率、触发脉冲的参数和形式等。 触发信号的同步性&#xff1a;触发信号必须与主电路的电源频率保持一致&#xff0c;并具有固定的相位关系。这是为了确保在每个周期内晶闸管都能在相同的相位上被触发&#x…...

基于Arduino做的“鱿鱼游戏”BOSS面具,支持动作检测

这是一个结合了3D打印、舵机、PIR传感器和DFPlayer MP3模块的DIY项目&#xff0c;旨在制作一个带有动画眼睛的"鱿鱼游戏"老板面具。当检测到动作时&#xff0c;面具的眼睛会移动并播放声音&#xff0c;非常适合万圣节使用。 这个项目是一个很好的起点&#xff0c;特…...

数据库的查询操作

之前学习了怎么创建数据库&#xff0c;创建数据表以及给数据表添加数据&#xff0c;我们今天就学习一下数据的查询 一. 查询语句的语法 select 列名&#xff08;字段名&#xff09; form 表名 [where &#xff08;查询条件表达式&#xff09;] [order by <排序的列明>[…...

WebGL编程指南 - WebGL概述

WebGL&#xff0c;是一项用来在网页上绘制和渲染复杂三维图形&#xff08;3D图形&#xff09;&#xff0c;并允许用户与之进行交互的技术 WebGL的一些信息&#xff1a; 表层基于HTML5标准&#xff0c;通过Canvas元素公开底层基于OpenGL&#xff0c;与OpenGL ES规范非常接近暂…...

前端杂学录(十)

1.axios 的底层实现 1. XMLHttpRequests 在浏览器环境中&#xff0c;Axios 使用 XMLHttpRequest 对象来发送请求。这是一个古老的 Web API&#xff0c;用于在浏览器中进行异步 HTTP 请求。 2. Node.js 的 http 模块 在 Node.js 环境中&#xff0c;Axios 使用 Node.js 的 ht…...

C++上机|编写函数invert实现对一维数组的倒序

//编写函数invert实现对一维数组的倒序 # include <iostream> using namespace std;class invert_array {private://int a[10]{0,1,2,3,4,5,6,7,8,9};public: void invert(int A[], int n){int i,j,temp;int m (n-1)/2;for(i0;i<m;i){jn-1-i;tempA[i];A[i]A[j];A[j]t…...

使用LSPatch+PlusNE修改手机软件

一、问题概述 国内使用一些软件&#xff0c;即使科学上网&#xff0c;打开都是网络错误&#xff0c;更换节点同样如此。 二、软件下载 通过官网或者正规商店(如Google play)下载并且安装。 是的&#xff0c;先要下载一个无法使用的版本&#xff0c;后续对其进行修改。 三、下…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁

赛门铁克威胁猎手团队最新报告披露&#xff0c;数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据&#xff0c;严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能&#xff0c;但SEMR…...

多元隐函数 偏导公式

我们来推导隐函数 z z ( x , y ) z z(x, y) zz(x,y) 的偏导公式&#xff0c;给定一个隐函数关系&#xff1a; F ( x , y , z ( x , y ) ) 0 F(x, y, z(x, y)) 0 F(x,y,z(x,y))0 &#x1f9e0; 目标&#xff1a; 求 ∂ z ∂ x \frac{\partial z}{\partial x} ∂x∂z​、 …...

C# winform教程(二)----checkbox

一、作用 提供一个用户选择或者不选的状态&#xff0c;这是一个可以多选的控件。 二、属性 其实功能大差不差&#xff0c;除了特殊的几个外&#xff0c;与button基本相同&#xff0c;所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡 背景 我们以建设星云智控官网来做AI编程实践&#xff0c;很多人以为AI已经强大到不需要程序员了&#xff0c;其实不是&#xff0c;AI更加需要程序员&#xff0c;普通人…...

DeepSeek越强,Kimi越慌?

被DeepSeek吊打的Kimi&#xff0c;还有多少人在用&#xff1f; 去年&#xff0c;月之暗面创始人杨植麟别提有多风光了。90后清华学霸&#xff0c;国产大模型六小虎之一&#xff0c;手握十几亿美金的融资。旗下的AI助手Kimi烧钱如流水&#xff0c;单月光是投流就花费2个亿。 疯…...