0

0

用PHP4中的PDF扩展来创建一个PDF文档

php中文网

php中文网

发布时间:2016-06-21 09:04:55

|

1721人浏览过

|

来源于php中文网

原创

 综述:PDF文档常被用在电子图书、说明书等方面,可以有效地防止拷贝与盗版,在PHP4中,我们能创建一个PDF格式的文档吗?答案是:运用PHP中的PDF扩展库。

  如何配置支持PDF的运行环境?

  首先,我们需要安装PDFLib 3.0.1 和 PHP4.0.1pl2 以支持PDF。

  软件要求 :

  PHP 4.02+ ( http://www.php.net
  PDFLib 3.0.1 ( http://www.pdflib.com )

  直接从http://php.net下载PHP的Uwe Steinman 补丁 ext/pdf/pdf.c 以支持 PDFLib v 3.0.1
  从http://www.pdflib.com 下载 PDFLib 3.0.1。
  安装http://www.pdflib.com/pdflib/patches.html上的每一个补丁。

  配置、编译及安装 PDFLib

#./configure --enabled-shared-pdflib
#make
#make install 

  你将安装 PDFLib 在目录 /usr/local/lib 下。

  配置PHP

#./configure --with-apxs=/usr/bin/apxs
--with-gd --with-pdflib=/usr/local --with-mysql=/usr/local
--with-config-file-path=/etc/httpd --with-zlib-dir=/usr
--with-ttf=/usr/local/include
--with-jpeg-dir=/usr --with-tiff-dir=/usr
--with-system-regex=yes --enable-debug=no
#make
#make install 

  更新系统库

  在/etc/ld.so.conf 中插入 /usr/local/lib
  #/sbin/ldconfig

  测试

  要重启 Apache :

  #Apachectl restart

  拷贝pdfclock.php 到你的httpd目录,然后测试。

  如何生成PDF文档?

  本例中我们将制作一个小册子,从数据库中取到册子的目录。

  预备的数据库测试

  创建目录表

create table catalogue(
id smallint(8) unsigned DEFAULT '0' NOT NULL,
item varchar(100) DEFAULT '' NOT NULL,
description tinytext,
img_data longblob,
imgname varchar(60),
imgsize varchar(60),
imgtype varchar(60),
price smallint(8) unsigned DEFAULT '0' NOT NULL,
PRIMARY KEY (id),
KEY item (item(20))
); 

  发送 MIME 头信息

  为了让我们的文档能正确地显示,我们需要发送正确的头信息给浏览器。在PHP下,我们可以用header函数来做,以下代码发送了正确的MIME类型给浏览器。

header( "Content-type: application/pdf" );
header( "Content-Disposition: attachment; filename=modulo.pdf" );
header( "Content-Description: PHP Generated Data" ); 

PhpLeft多元化管理系统1.2  GBk
PhpLeft多元化管理系统1.2 GBk

PhpLeft多元化管理系统v1.2企业专业版,含企业所需的栏目数据,删减其他不需要的模块。PhpLeft Diversification Management System(中文名为:PHPLEFT多元化管理系统),荣获2个第一,是全球第一家多元化网站管理系统,是全球第一家采用中文编程的php系统,根据模型创建栏目,栏目自由扩展字段,操作简便,简单易懂的标签系统,让建站更简单,适合建各类型站点。

下载

  从MySQL取数据

  以下就是一段从目录数据库中取记录的代码。

<?php
$link = mysql_connect ("127.0.0.1", "flyadm", "flystore") or die ("Could not connect");
mysql_select_db ("flystore", $link);
$result = mysql_query ("SELECT * FROM catalogue", $link) or die ("Invalid query");
$data = mysql_fetch_row ($result);
……
……
mysql_close ($link);
?> 

  创建pdf文件

  为了创建一个PDF文档,需要以下步骤:
  打开一个PDF流并绑定一个句柄。
  $pdf = PDF_open();

  (可选) 设置文档信息,如作者、标题、主题等等。

  开始一个新页(一个PDF文档可以创建不同的页用不同的版面,如 纵向、横向……)。

  PDF_begin_page($pdf, 595, 842);

  (可选) 设置一个超链接:
  PDF_add_outline($pdf, "Item ".$data[1]);

  选择字体,尺寸(pdf_set_font($pdf, "Helvetica-Bold" , 20, winansi);)和渲染模式。

  插入文本在x,y位置上:
  PDF_show_xy($pdf, "Item : " .$data[1], 100, 700);

  插入图像在PDF文档的x,y位置上:
  pdf_place_image($pdf, $im, 100, 300, 3);

  输出文本缓冲区并关闭PDF文档。

  如何应用PDF的坐标系统?

  我们要定位一个字串或图片在PDF的页面的某一个部分,要要求我们从尺/英寸距离转到相符的DTP点值。在PDFLib手册的45页有下面的话:

  "……缺省的坐标系统(或缺省的用户空白在PDF术语中)以页面的左下角为原点,并且用DTP点作为单位:

1 pt = 1 inch / 72 = 25,4 mm / 72 = 0,3528 mm 

这是一段创建PDF文件的代码:

<?php
$pdf = PDF_open();
pdf_set_info_author($pdf, "Luca Perugini");
PDF_set_info_title($pdf, "Brochure for FlyStore");
pdf_set_info_creator($pdf, "See Author");
pdf_set_info_subject($pdf, "FlyStore");
PDF_begin_page($pdf, 595, 842);
PDF_add_outline($pdf, "Item ".$data[1]);
pdf_set_font($pdf, "Helvetica-Bold" , 20, winansi);
pdf_set_text_rendering($pdf, 0);
pdf_show_xy($pdf, "FlyStore Catalogue 2000",50,780);

PDF_show_xy($pdf, "Item : " .$data[1], 100, 700);

PDF_show_xy($pdf, "Description : " .$data[2], 100, 620);

$im = PDF_open_jpeg($pdf, "pass4_sml.jpg");
pdf_place_image($pdf, $im, 100, 300, 3);
pdf_close_image ($im);

pdf_stroke($pdf);
PDF_end_page($pdf);
PDF_close($pdf);
?> 



WPS零基础入门到精通全套教程!
WPS零基础入门到精通全套教程!

全网最新最细最实用WPS零基础入门到精通全套教程!带你真正掌握WPS办公! 内含Excel基础操作、函数设计、数据透视表等

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
AO3官网入口与镜像站汇总 Archive of Our Own访问路径及最新入口
AO3官网入口与镜像站汇总 Archive of Our Own访问路径及最新入口

本专题专注于提供Archive of Our Own (AO3) 的最新官网入口与镜像站地址,详细整理了可用的访问路径,包括中文镜像站入口和网页版直达链接,帮助用户轻松找到最稳定的访问方式,确保顺畅浏览AO3内容。

1

2026.02.05

192.168.1.1路由器后台管理入口与设置登录指南
192.168.1.1路由器后台管理入口与设置登录指南

本专题汇总了192.168.1.1路由器的后台管理入口、登录网址以及无线网络设置的方法,帮助用户快速进入路由器管理页面,进行网络配置、密码修改等常见操作,提升家庭网络的管理与优化效率。

1

2026.02.05

Python 数据库优化与性能调优
Python 数据库优化与性能调优

本专题专注讲解 Python 在数据库性能优化中的应用,包括数据库连接池管理、SQL 查询优化、索引设计与使用、数据库事务管理、分布式数据库与缓存系统的结合。通过分析常见性能瓶颈,帮助开发者掌握 如何优化数据库操作,提升 Python 项目在数据库层的响应速度与处理能力。

1

2026.02.05

Java 微服务与 Spring Cloud 实战
Java 微服务与 Spring Cloud 实战

本专题讲解 Java 微服务架构的开发与实践,重点使用 Spring Cloud 实现服务注册与发现、负载均衡、熔断与限流、分布式配置管理、API Gateway 和消息队列。通过实际项目案例,帮助开发者理解 如何将传统单体应用拆分为高可用、可扩展的微服务架构,并有效管理和调度分布式系统中的各个组件。

0

2026.02.05

C++ 多线程编程与线程池设计
C++ 多线程编程与线程池设计

本专题深入讲解 C++ 中的多线程编程与线程池设计,涵盖 C++11/14/17 的线程库、线程同步机制(mutex、condition_variable、atomic)、线程池设计模式、任务调度与优化、并发瓶颈分析与解决方案。通过多个实际案例,帮助开发者掌握 如何设计高效的线程池管理系统,提升 C++ 程序在高并发场景下的性能与稳定性。

0

2026.02.05

微信网页版文件传输助手教程合集
微信网页版文件传输助手教程合集

本专题整合了微信网页版文件传输助手教程、入口等等内容,阅读专题下面的文章了解更多详细内容。

16

2026.02.04

微信文件过期恢复教程
微信文件过期恢复教程

本专题整合了微信文件过期恢复方法、技巧教程,阅读专题下面的文章了解更多详细内容。

10

2026.02.04

抖音网页版入口与视频观看指南 抖音官网视频在线访问
抖音网页版入口与视频观看指南 抖音官网视频在线访问

本专题汇总了抖音网页版的入口链接、官方登录页面以及视频观看入口,帮助用户快速访问抖音网页版,提供免登录访问方式和直接进入视频播放页面的方法,确保顺利浏览和观看抖音视频。

96

2026.02.04

学习通网页版入口与在线学习指南 学习通官网登录与使用方法
学习通网页版入口与在线学习指南 学习通官网登录与使用方法

本专题详细汇总了学习通网页版入口与登录方法,提供学习通官方网页端入口、学生登录平台、网页版使用指南等内容,帮助用户快速稳定地登录学习通官网,顺利进入学习平台,提升学习效率和体验。

17

2026.02.04

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
成为PHP架构师-自制PHP框架
成为PHP架构师-自制PHP框架

共28课时 | 2.5万人学习

PHP课程
PHP课程

共137课时 | 11.1万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.2万人学习

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

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