开发学院WEB开发PHP PHP生成PDF文档 with PDFLib 阅读

PHP生成PDF文档 with PDFLib

 2010-12-01 07:15:31 来源:WEB开发网   
核心提示: PHP一个最大的好处就是他对新技术的支持非常容易,这种语言的可扩展性使得研发人员能够非常方便地添加新的模块,PHP生成PDF文档 with PDFLib,而且遍布世界的技术团体的支持和众多扩展模块的支持使得PHP已成为功能最齐全的Web编程语言之 一,目前可得到的扩展模块已能够使研发人员执行IMAP和POP3操作,你

PHP一个最大的好处就是他对新技术的支持非常容易,这种语言的可扩展性使得研发人员能够非常方便地添加新的模块,而且遍布世界的技术团体的支持和众多扩展模块的支持使得PHP已成为功能最齐全的Web编程语言之

  一。目前可得到的扩展模块已能够使研发人员执行IMAP和POP3操作,能动态产生图象和Shockwave Flash动画,进行信用卡验证,敏感数据的加密解密,还能够解析XML格式的数据。但这还不是全部,目前,又有一个新的模块能和PHP进行绑定了,那就 是PDFLib扩展模块,他能够让研发人员动态产生PDF(Adobe Portable Document Format)格式的文件,下面就先看看怎么在PHP里使用这个模块。

  为了能够使PHP具有操作PDF格式文件的能力,你必须先在你 的系统里安装PDFLib扩展库,如果你使用的是Lunix系统,你能从 http://www.pdflib.com/pdflib/index.html下载一个并进行编译,如果你使用的是视窗系统系统,那就更简单了,只需 要下载一个编译好的PDFLib库,然后在PHP的设置文件里把相应的行的注释去掉即可。

  extension=php_pdf.dll

  如果是动态装载,也能是参照下面的命令:

  dl("php_pdf.dll");

  此外,你还必须有一个Adobe Acrobat PDF阅读器,用来浏览PDF格式,如果你没有,你能从http://www.adobe.com/免费下载。

  一旦你做好了前期准备,就能创建PDF文件了,下面就是个简单的例子:

  <?php// 创建一个新的PDF文件句柄$pdf = PDF_new();// 打开一个文件PDF_open_file($pdf, "PDFTest.pdf");// 开始一个新页面(A4)PDF_begin_page($pdf, 595, 842);// 得到并使用字体对象$arial = PDF_findfont($pdf, "Arial", "host", 1);PDF_setfont($pdf, $arial, 10);// 输出文字PDF_show_xy($pdf, "This is an exam of PDF Documents, It is a good Lib,",50, 750);PDF_show_xy($pdf, "If you like,please try yourself!", 50, 730);// 结束一页PDF_end_page($pdf);// 关闭并保存文件PDF_close($pdf);?>

  然后保存成PHP文件,在浏览器里进行浏览,PHP就会执行上面的代码,他产生一个新的PDF文件,并保存到指定的位置。

  目前我们分析一下什么的代码,要使用PHP创建PDF文件,有四个步骤:1,创建文件句柄;2,注册文件的字体和颜色;3,用PDFLib提供的函数向文件句柄写文字或画图;4,保存文件。

  首先,创建PDF文件句柄,语法如下:

  $pdf = PDF_new();

  这个任务是由PDF_new()函数完成的,他返回一个PDF文件的句柄,这个句柄将会被后续的所有操作使用。

  下一步要做的,就是给PDF文件一个名字,由PDF_open_file()函数完成,他需要先前创建的文件句柄和自定义的文件名做参数:

  PDF_open_file($pdf, "PDFTest.pdf");

  一旦我们创建了文件,就能用PDF_begin_page()函数在其中插入新页面了:

  PDF_begin_page($pdf, 595, 842);

  然后用PDF_end_page()结束页面。

  注意这里,在PDF_begin_page()函数里,有另外两个参数,他们分别代表页面尺寸的宽和高,单位是磅(point,1磅等于1/72英寸),或许在这里数学并不是你的强项,PHP还提供了大多数标准页面尺寸,象A4等,上面的例子就是使用A4的尺寸。

  在调用PDF_begin_page()函数和PDF_end_page()函数之间的代码是向PDF文件了写内容的,内容能是文字、图象及几何图像 等。例子中只是写了一行文字,先得到一个字体,然后把文字写到文件里。通过PDF_findfont()和PDF_setfont()函数选择和注册字体 是非常方便的,PDF_findfont()函数预备了一种文件中要使用的字体,需要的参数有字体的名字,使用的编码,字体是否要嵌入到PDF文件中。 PDF_findfont()函数返回一个字体对象,他将会在PDF_setfont()函数里使用。

  $arial = PDF_findfont($pdf, "Arial", "host", 1);PDF_setfont($pdf,$arial, 10);

  一旦我们设定了字体,就能使用PDF_show_xy()函数向页面中的指定位置写字符串了。

  PDF_show_xy($pdf, "This is an exam of PDF Documents, It is a good Lib,",50, 750);PDF_show_xy($pdf, "If you like,please try yourself!", 50, 730);

  PDF_show_xy()函数用来向页面写内容,最后两个参数是要写入的字符串的坐标位置,注意坐标的原点(0,0)是在文件的左下角。一旦文字写完 了,页面就能关闭了PDF_end_page(),当然你也能写更多的页。所有的页面写完之后,用PDF_close()函数关闭文件,此时文件就回保存 到调用PDF_open_file()函数时指定的文件名和路径下,文件句柄随之销毁。

  PDFLib库能做的事情还远不止这些,还能在页面里加入图象,我们以前面的文件为例,在文字的下面添加一个图象文件,下面的语句实现了添加图象功能:

  $image = PDF_open_image_file($pdf, "jpeg", "PDFImageTest.jpg");PDF_place_image($pdf, $image, 50, 650, 0.25);

  是不是非常简单?PDF_open_image_file()函数打开一个图像文件,能接受的图象类型有:GIF, JPEG, TIFF 和 PNG,该函数返回图象句柄,PDF_place_image()函数利用前面的图象句柄,把图象插入到PDF文件中。注意这里的坐标位置是指图象的左下 角,最后一个参数是图象显示时的比例因子,1是和实际大小相同显示,0.5是按原来尺寸的一半显示。

  除了在PDF文件里画出现有的图象以外,PDF模块还提供了许多函数来让我们画出几何图像。比如:直线、圆、长方形等几何图案,下面就是一段画直线的实现方法:

  <?php$pdf = PDF_new();PDF_open_file($pdf, "LineExam.pdf");PDF_begin_page($pdf, 595, 842);$arial = PDF_findfont($pdf, "Arial", "host", 1);PDF_setfont($pdf, $arial, 12);// 设定直线的颜色PDF_setcolor($pdf, "stroke", "rgb", 0, 0, 0);// 在左上角放置一个Logo标识$image = PDF_open_image_file($pdf, "jpeg", "logo.jpg");PDF_place_image($pdf, $image, 50, 785, 0.5);// 在Logo标识下画出直线PDF_moveto($pdf, 20, 780);PDF_lineto($pdf, 575, 780);PDF_stroke($pdf);// 在页面底部画出另外一条直线PDF_moveto($pdf, 20,50);PDF_lineto($pdf, 575, 50);PDF_stroke($pdf);// 输出一些文字PDF_show_xy($pdf, "Meng's Corporation", 200, 35);PDF_end_page($pdf);PDF_close($pdf);?>

  从上面的例子能看出,要 画一条直线,只需要三个函数即可:PDF_moveto(), PDF_lineto() 和 PDF_stroke()。上面的例子是先用PDF_moveto($pdf, 20, 780)函数把光标移动到坐标(20,780),然后用PDF_lineto($pdf, 575, 780)函数定义直线的另外一个点的坐标(575,780),最后用PDF_stroke($pdf)画出线。设定颜色的函数 PDF_setcolor($pdf, "stroke", "rgb", 0, 0, 0)有好几个参数,其中的颜色填充模式有stroke、fill、both三种选项,颜色能是RGB或CMYK配色方案的颜色值。值得注意的 是:PDF_setcolor()函数中使用的值是颜色的百分比,也就是说是该颜色的亮度,比如:如果想设为红色(RGB:255,0,0),你能这样 写:PDF_setcolor($pdf, "stroke", "rgb", 1, 0, 0),如果想设为黄色,能这样:PDF_setcolor($pdf, "stroke", "rgb", 1, 1, 0)。

1 2  下一页

Tags:PHP 生成 PDF

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
更多精彩
    赞助商链接

    热点阅读
      焦点图片
        最新推荐
          精彩阅读