微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在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,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,842);
PDF_add_outline($pdf,Item .$data[1]);
pdf_set_font($pdf,winansi);
pdf_set_text_rendering($pdf,0);
pdf_show_xy($pdf,FlyStore Catalogue 2000,50,780);

PDF_show_xy($pdf,700);

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

$im = PDF_open_jpeg($pdf,pass4_sml.jpg);
pdf_place_image($pdf,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/.

我希望对你有用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐