澳门新浦京app下载用PHP编写PDF文档生成器

PHP一个最大的帮助和益处正是它对新手艺的扶持特别轻巧,这种语言的可扩大性使得开垦人士能够好低价地加多新的模块,况且布满世界的本事团队的扶植和无数扩张模块的支撑使得PHP已经变为作用最健全的Web编制程序语言之
一。最近可获取的扩张模块已经能够使开辟人士实行IMAP和POP3操作,能够动态发生图象和Shockwave
Flash动漫,进行银行卡验证,敏感数据的加密解密,还能够够深入深入分析XML格式的数量。但那还不是一体,未来,又有二个新的模块能够与PHP举办绑定了,那正是PDFLib扩张模块,它亦可让开垦人员动态发生PDF格式的文件,下边就先看看怎么着在PHP里使用这些模块。

为了能够使PHP具备操作PDF格式文书档案的工夫,你必须要先在您的系列里安装PDFLib扩充库,假使您接收的是Lunix系统,你可以从
下载三个并拓宽编写翻译,借使您利用的是Windows系统,那就更简短了,只供给下载二个编写翻译好的PDFLib库,然后在PHP的安插文件里把相应的行的注释去掉就能够。

extension=php_pdf.dll

假如是动态装载,也足以是参照上边包车型客车下令:

dl(“php_pdf.dll”);

其余,你还必得有二个Adobe Acrobat
PDF阅读器,用来浏览PDF格式,假令你未曾,你能够从无偿下载。

若是您搞好了最早计划,就可以创造PDF文件了,下边便是四个简短的例证:

?php

// 创设二个新的PDF文档句柄

$pdf = PDF_new();

// 打开三个文书

PDF_open_file($pdf, “PDFTest.pdf”);

// 初步三个新页面(Levin卡塔尔(قطر‎

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(State of Qatar函数完毕,它须要先前创立的文件句柄和自定义的文书名做参数:

PDF_open_file($pdf, “PDFTest.pdf”);

假定我们创建了文书档案,就足以用PDF_begin_page(卡塔尔(قطر‎函数在中间插入新页面了:

PDF_begin_page($pdf, 595, 842);

然后用PDF_end_page(State of Qatar截至页面。

潜心这里,在PDF_begin_page(卡塔尔国函数里,有其余五个参数,他们分别表示页面尺寸的宽和高,单位是磅,恐怕在这里间数学并不是您的刚毅,PHP还提供了绝大大多行业内部页面尺寸,象Bora等,上边的事例便是使用凯美瑞的尺码。

在调用PDF_begin_page()函数和PDF_end_page(卡塔尔函数之间的代码是向PDF文书档案了写内容的,内容能够是文字、图象以至几何图形等。例子中只是写了一行文字,先获得八个字体,然后把文字写到文书档案里。通过PDF_findfont()和PDF_setfont(卡塔尔函数接收和登记字体是很有益的,PDF_findfont(卡塔尔函数预备了一种文书档案中要利用的书体,须求的参数有字体的名字,使用的编码,字体是或不是要松手到PDF文件中。PDF_findfont(卡塔尔国函数重返一个字体对象,它将会在PDF_setfont(State of Qatar函数里使用。

$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(卡塔尔国函数用来向页面写内容,最终三个参数是要写入的字符串的坐标地点,注意坐标的原点是在文书档案的左下角。一旦文字写完了,页面就足以关闭了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);

// 在左上角停放多个图标标记

$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卡塔尔函数把光标移动到坐标,然后用PDF_lineto($pdf, 575,
780卡塔尔函数定义直线的其余贰个点的坐标,最终用PDF_stroke($pdf卡塔尔画出线。设定颜色的函数PDF_setcolor($pdf,
“stroke”, “rgb”, 0, 0,
0State of Qatar有一点点个参数,当中的颜色填充格局有stroke、fill、both二种选取,颜色能够是RGB或CMYK配色方案的颜色值。值得注意的是:PDF_setcolor(卡塔尔国函数中应用的值是颜色的比重,相当于说是该颜色的亮度,比方:要是想设为浅绿,你能够如此写:PDF_setcolor($pdf,
“stroke”, “rgb”, 1, 0, 0卡塔尔国,假设想设为暗紫,能够如此:PDF_setcolor($pdf,
“stroke”, “rgb”, 1, 1, 0)。

要想画带填充色的长方形和圆形,能够利用上边包车型大巴诀要:

//设定填充颜色

PDF_setcolor($pdf, “fill”, “rgb”, 1, 1, 0);

// 设定边框线的颜料

PDF_setcolor($pdf, “stroke”, “rgb”, 0, 0, 0);

// 画矩形,前边的七个参数分别是左下角的坐标X、Y和宽度、中度

PDF_rect($pdf, 50, 500, 200, 300);

PDF_fill_stroke($pdf);

PDF_setcolor($pdf, “fill”, “rgb”, 0, 1, 0);

PDF_setcolor($pdf, “stroke”, “rgb”, 0, 0, 1);

// 画出圆,参数分别是圆心坐标和圆的半径

PDF_circle($pdf, 400, 600, 100)

其它,PDFLib还提供了书写文书档案摘要音讯的函数,这个函数以PDF_set_info_*(卡塔尔(قطر‎初始,那么些新闻能够包含:文书档案的编辑者、标题、内容,宗旨等。上边是多少个常用的函数:

PDF_set_info_author($pdf, “net_lover”);

PDF_set_info_creator($pdf, “Meng Xianhui”);

PDF_set_info_title($pdf, “PHP Exam”);

PDF_set_info_subject($pdf, “PHP”);

PDF_set_info_keywords($pdf, “PHP PDF PDFLib”);

当用Acrobat
Reader展开那样的文书档案时,在菜单“文件”-“文书档案属性”-“摘要”里就会见到地方写进去的音讯。

聊起此地,相信咱们对怎样运用PDFLib创建PDF文书档案有了基本的精通了呢。上边,大家就以一个其实的事例来看看哪些为大家的行事服务。这么些事例就是依照提供的数码来生成饼图,首先,创建二个多少输入表单,输入饼图中每一块的分寸。文件如下:

html

head

title利用PHP创建PDF文档/title

/head

body

h3饼图生成器/h3

table cellspacing=”5″ cellpadding=”5″

form action=”pie.php” method=POST

tr

td请输入饼图中每一块的数据值,以私分开:/td/tr

trtdinput type=text name=data/td/tr

trtdinput type=submit value=”产生PDF饼图”/td/tr

/form

/table

/body

/html

下边是pie.php文件的代码:

?php

// 选用书库

$data = $_POST[‘data’];

$slices = explode(“,”, $data);

// 最早化变量

$sum = 0;

$degrees = Array();

$diameter = 200;

$radius = $diameter/2;

// 设定每一块饼图的水彩,用数组存款和储蓄

$colours = array(array(0,0,0),array(0,0,1),array(0,1,0),

array(1,0,0),array(0,1,1),array(1,1,0),

array(1,0,1));

// 总结总的数值

$sum = array_sum($slices);

// 把每一块分别调换来相应的比例

for ($y=0; $ysizeof($slices); $y++) {

$degrees[$y] = ($slices[$y]/$sum) * 360;

}

// 开端成立 PDF 文书档案

$pdf = PDF_new();

PDF_open_file($pdf, “chart.pdf”);

PDF_begin_page($pdf, 500, 500);

PDF_setcolor($pdf, “stroke”, “rgb”, 1, 1, 0);

PDF_moveto($pdf, 250, 250);

PDF_lineto($pdf, 350, 250);

PDF_stroke($pdf);

for ($z=0; $zsizeof($slices); $z++)

{

// 设定填充颜色

PDF_setcolor($pdf, “fill”, “rgb”, $colours[$z][0],

$colours[$z][1], $colours[$z][2]);

// 总计每一种圆弧的终极坐标

$end_x = round(250 + ($radius * cos($last_angle*pi()/180)));

$end_y = round(250 + ($radius * sin($last_angle*pi()/180)));

// 用直线分割每一块圆弧

PDF_moveto($pdf, 250, 250);

PDF_lineto($pdf, $end_x, $end_y);

// 计算并画出圆弧

PDF_arc($pdf, 250, 250, $radius,
$last_angle,($last_angle+$degrees[$z]));

// 保存最后的角度

$last_angle = $last_angle+$degrees[$z];

// 填充颜色

PDF_fill_stroke($pdf);

}

// 重画外圆概况

PDF_circle($pdf, 250, 250, 100);

PDF_stroke($pdf);

PDF_end_page($pdf);

PDF_close($pdf);

// 假使要一向出口到顾客端的话,把下边包车型大巴代码加上

$buf = PDF_get_buffer($p);

$len = strlen($buf);

header(“Content-type: application/pdf”);

header(“Content-Length: $len”);

header(“Content-Disposition: inline; filename=Pie_php.pdf”);

print $buf;

PDF_delete($p);

?

运作方面包车型客车次序,并输入分化数值,你将会获得差别的饼图。

PDFLib是二个兼容性很好的模块,你不单能够用PHP编写,还足以用Java,C#,VB.NET,VB5/6(ActiveX/COM卡塔尔(قطر‎,ASP(VBScript/Jscript卡塔尔(قطر‎,Borland
Delphi, Windows Script
Host,ColdFusion4.5+,C/C++,Python,Perl,RPG;补助的阳台不唯有Windows,还可能有Unix/Linux,Mac
OS,IBM eServer iSeries 400 和 zSeries
S/390等,具体的运作境况请任何时候访谈他们的网站得到最新的资料。

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图