0

0

php中pdf页面制作方法

小云云

小云云

发布时间:2018-03-29 15:06:46

|

1967人浏览过

|

来源于php中文网

原创


FPDF即“Free PDF”,FPDF类库提供了基本的PDF创建功能,其源代码和使用权是免费的。本文主要和大家分享php中pdf页面制作方法,希望能帮助到大家。

PDF格式文档优势

  1. 通用:pdf文档在unix和windows系统均可正常使用。

  2. 安全:PDF文档可设置为只读模式,并且可以添加密码等保护措施。

  3. 美观:PDF文档可以很大程度上兼容中文编码,并且保留当前页面排版。

  4. 精巧:大多数情况下,生成PDF文档会减小文件体积。

FPDF类库下载

  • FPDF类库下载地址: http://www.fpdf.org/

    立即学习PHP免费学习笔记(深入)”;

  • FPDF类库中文插件下载地址: http://www.fpdf.org/download/chinese.zip

FPDF类库配置

  1. 下载FPDF文件。

    Difeye-敏捷的轻量级PHP框架
    Difeye-敏捷的轻量级PHP框架

    Difeye是一款超轻量级PHP框架,主要特点有: Difeye是一款超轻量级PHP框架,主要特点有: ◆数据库连接做自动主从读写分离配置,适合单机和分布式站点部署; ◆支持Smarty模板机制,可灵活配置第三方缓存组件; ◆完全分离页面和动作,仿C#页面加载自动执行Page_Load入口函数; ◆支持mysql,mongodb等第三方数据库模块,支持读写分离,分布式部署; ◆增加后台管理开发示例

    下载
  2. 将下载压缩文件解压到项目根目录下。

  3. 在项目中引用FPDF类库(如下代码)。

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:图片高度。
*/

解决中文乱码问题

  1. 下载FPDF中的中文插件chinese.php文件,创建PDF_Chinese()对象。

  2. 将页面编码设置为GB2312或使用iconv()函数改变字符串编码方式。

/*示例代码如下*/ 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() 方法设置页眉和页脚。

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()函数循环创建单元格,最终组成表格。

 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 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类依然是乱码。

相关专题

更多
云朵浏览器入口合集
云朵浏览器入口合集

本专题整合了云朵浏览器入口合集,阅读专题下面的文章了解更多详细地址。

0

2026.01.20

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

20

2026.01.20

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

62

2026.01.19

java用途介绍
java用途介绍

本专题整合了java用途功能相关介绍,阅读专题下面的文章了解更多详细内容。

87

2026.01.19

java输出数组相关教程
java输出数组相关教程

本专题整合了java输出数组相关教程,阅读专题下面的文章了解更多详细内容。

39

2026.01.19

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

10

2026.01.19

xml格式相关教程
xml格式相关教程

本专题整合了xml格式相关教程汇总,阅读专题下面的文章了解更多详细内容。

13

2026.01.19

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

19

2026.01.19

微信聊天记录删除恢复导出教程汇总
微信聊天记录删除恢复导出教程汇总

本专题整合了微信聊天记录相关教程大全,阅读专题下面的文章了解更多详细内容。

160

2026.01.18

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.4万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 2.3万人学习

C++教程
C++教程

共115课时 | 12.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号