怎样在php中使用PDF文档功能

写给Hunte: 
好久不在网上见你,真有点说不出来的感觉,没有hunte的phpuser.com什么也不是. 转了你站上的两篇文章, 特翻了一篇了以示致歉. 

---------------------------------------------------- 
原作者:Perugini Luca (www.phpbuilder.com) 
译者:znsoft (http://www.phpease.com) 
--------------------------------------------------- 
转载请保留以上信息,否则请不要转载! 

PHP捆绑PDFLIB库也许是最好的web出版平台了。一对典型的用法: 

需求小册子 
电子商务发货单 

通过这个指南,你可以学会怎样使用php4中的PDF扩展来创建PDF文档。 
我们也把焦点放在用mysql数据来创建PDF文档。 

内容摘要 


安装PDFLib 3.0.1 和有PDF支持的PHP4.01pl2(译注:你可以安装最新的php4.03pl1) 

提取PDF文档 
(我假设你有一点配置php的经验) 



安装PDFLib和有PDF支持的PHP。 

需求: 

PHP 4.02+ 从 http://php.net 下载 
PDFLib 3.0.1 从 http://www.pdflib.com 下载 

这是一个怎样让PDFLib3.0.1和php4一起工作的小秘方:(老外很幽默的^_^) 

直接从http://www.php.net下载 ext/pdf/pdf.c的补丁来支持PDFLib v 3.0.1 

下载PDFLib3.0.1从此处 http://www.pdflib.com 
适用的补丁你可以在此找到 http://www.pdflib.com/pdflib/patches.html 

配置,Make和安装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 



更新系统库 
插入 /usr/local/lib 进 /etc/ld.so.conf (文件) 

#/sbin/ldconfig 



测试和验证 
现在你需要重启apache 
#apachectl restart 


拷贝pdfclock.php 到的httpd目录中(就是web目录)...测试....一切正常。 

重要信息 

要使得PHPLIb和字体一起工作你必须注意PDFLib手册中的UPR部分。 
最简单的用PDFLib使用字体的办法是拷贝PDFlib tar包中的标准UPR描述文件(fonts/pdflib.upr)到你的工作目录。 

提取PDF文档 
现在我们已经作好了如飞地生成PDF文档的条件! 


在这个小例子中我们要生成FLYStore公司的需求小册子,当然是从目录数据库中提取数据。 




准备数据库 
我假设你有一点数据库的经验,最小限度,我真的只希望你懂得怎样创建一个数据库并向其中插入表。 
创建表 catalogue: 

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: PHP3 Generated Data" ); 





重要信息 
你必须知道的是在送出头信息前不能输出任何东西。一个常见的错误是在文件的开头存在空格。 


从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(); 

(Optional) Set document information like Author, Title, Subject, etc 
(可选的)设置文档信息,如作者,标题,主题,等 

开始一个新页(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); 

或插入图片在X.Y位置: 
pdf_place_image($pdf, $im, 100, 300, 3); 

刷新文本缓冲区并关闭PDF流。 
PDF Coordinate Systems 
What we need to do to locate a string or picture in some part of the PDF page, 
在PDF页的很多地方我们需要定位字符串和图片,转换英制单位到DTP点值. 

在PDFLIB手册的45页写到: 



".. .缺省的坐标系统的原点在页面的左下角,用DTP点作为单位: 
1 pt = 1 inch /72 = 25.4mm /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); ?> 



在最后,我要提示你这篇文章不是PDF教程,如果你需要更多的PDF文档的信息和用法,你可以访问 
http://www.pdfzone.com/ 和 http://www.planetpdf.com/. 

我希望对你有用。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/414287.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

并发编程快速入门

1、线程与进程的区别 进程是所有线程的集合&#xff0c;每一个线程是进程中的一条执行路径。 比方&#xff1a;通过查看 windows 任务管理器中的列表&#xff0c;我们可以把运行在内存中的 exe 文件理解成进程&#xff0c;进程是受操作系统管理的基本运行单元。 2、为什么要…

工作275:表单验证层级添加

<template><!--绑定了一个 控制是否为全屏fullscreen close-on-click-modal 是否通过点击model进行关闭 visible是否显示弹出框 close关闭按钮 --><el-dialog :title"fullTitle" width"80%" :fullscreen"false" :close-on-click-…

Python 黑帽子第二章运行截图

转载于:https://www.cnblogs.com/blankicefire/p/8796158.html

公司网页添加旺旺,状态不正确

这两天在给公司做的网站添加旺旺&#xff0c;在阿里巴巴官网生成代码之后复制到网页。想试试旺旺的状态是否正确&#xff0c;登录旺旺之后一直都是不在线状态&#xff0c;如下图&#xff1a; &#xff0c; 到官网问客服之后得到的答复如下&#xff1a; 如果您登录了阿里旺旺…

并发编程之多线程线程安全(下)

1、什么是 Volatile&#xff1f; volatile 是一个类型修饰符&#xff0c;具有可见性&#xff0c;也就是说一旦某个线程修改了该被 volatile 修饰的变量&#xff0c;它会保证修改的值会立即被更新到主存&#xff0c;当有其他线程需要读取时&#xff0c;可以立即获取修改之后的值…

工作265:v-model实现原理 自定义组件使用v-model

v-model只是一个语法糖&#xff0c;等于:valueinput&#xff0c;真正的实现靠的还是&#xff1a; &#xfeff;v-bind:绑定响应式数据&#xff0c;触发 input 事件并传递数据 (核心和重点) 1其实和下面一样的 <input :value“something” input“something $event.target…

关于CI框架引入CSS与JS文件

</pre>最近用了一下CI框架&#xff0c;使用到了bootstrap&#xff0c;引入CSS文件的时候一直不生效&#xff0c;琢磨这找到了原因。<p></p><p>首先&#xff0c;在根目录找到.htaccess文件&#xff0c;修改为如下内容</p><p></p><…

视图转为表

create table t as select * from view转载于:https://www.cnblogs.com/jycjy/p/8796841.html

idea中隐藏.iml文件

在创建父子工程或者聚合工程时产生的大量 .iml 文件&#xff0c;有时会对我们的操作产生干扰&#xff0c;所以&#xff0c;一般情况下&#xff0c;我们都将其隐藏掉&#xff0c;步骤如下&#xff1a; File——>settings——>Editor——>File Types——>Ignore fil…

YII2 服务器验证码不显示

<span style"font-size:18px;">最近做的一个项目上线了&#xff0c;我用YII2新搭建的后台&#xff0c;在本地以及内测地址都正常&#xff0c;上线之后验证码却没有显示&#xff0c;上网搜了一下&#xff0c;有网友说修改一下源文件就可以。</span> 查找源…

微信小程序视频弹幕效果

这次&#xff0c;和大家一起探讨下小程序视频弹幕一、按照老规矩&#xff0c;先附上gif效果图&#xff1a;二、接下来看下官方文档API对vide说明PS&#xff1a;相关属性解析&#xff1a;danmu-list:弹幕列表 enable-danmu:是否显示弹幕 danmu-btn:弹幕按钮 controls:是否显示视…

基于Docker搭建GitLab代码管理

关于Git、SVN的优缺点就不再重复了&#xff0c;本篇主要以实际搭建为主。 1、下载镜像文件 在命令行窗口执行如下指令&#xff0c;预计下载完成4分钟。 docker pull beginor/gitlab-ce:11.0.1-ce.0注意&#xff1a; 一定要配置镜像加速&#xff0c;不然会非常非常的慢&#x…

虚拟域名不能访问

早上遇到个问题&#xff0c;打开本地虚拟域名&#xff0c;访问报错。开始的时候报错是&#xff0c;地址不存在。后面发现是因为丢了.htaccess文件&#xff08;用的是TP框架&#xff09;&#xff0c;加上这个文件&#xff0c;内容如下 <IfModule mod_rewrite.c>Options Fo…

CentOS 7安装Hadoop 3.0.0

最近在学习大数据&#xff0c;需要安装Hadoop&#xff0c;自己弄了好久&#xff0c;最后终于弄好了。网上也有很多文章关于安装Hadoop的&#xff0c;但总会遇到一些问题&#xff0c;所以把在CentOS 7安装Hadoop 3.0.0的整个过程记录下来&#xff0c;有什么不对的地方大家可以留…

Docker中Maven私服的搭建

为何用到Maven私服&#xff1f; 在实际开发中&#xff0c;项目中可能会用到第三方的jar、内部通讯的服务接口都会打入到公司的私服中。 我们从项目实际开发来看&#xff1a; 一些无法从外部仓库下载的构件&#xff0c;例如内部的项目还能部署到私服上&#xff0c;以便供其他依赖…

博客作业03--栈和队列

1.学习总结 2.PTA实验作业 题目1&#xff1a;jmu-字符串是否对称 1设计思路 for i 1 to 字符串str结束if 栈顶元素 ! str[i] 字符串不对称输出noendfor字符串对称输出yes 2代码截图 3PTA提交列表说明 前面几处错误都是因为输入用的是getchar(),后来改用gets就对了好像是因为这…

关于微信支付报错

最近两周一直在做网站的微信支付&#xff0c;期间遇到好多个问题&#xff0c;而最坑的问题&#xff0c;应该就是一个exit引发的坑案。 其实上周微信支付就已经调通了&#xff0c;在测试环境测试&#xff0c;没有什么大的问题&#xff0c;完美。但是提交到内测环境之后&#xf…