巅云智能建站平台搭建版(创业流派版)火爆上线,毕生受权!新增:文章智能收罗+全站真静态打包+都会分站+智能小法式+不法词过滤+H5自顺应+智能链词等功效功效概况
建站专提News

用PHP编写PDF文档天生器

一佰互联网站开辟设想(www.taishanly.com) 宣布日期 2020-05-01 19:07:18 阅读数: 106

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下载一个并停止编译,若是你操纵的是Windows体系,那就更简略了,只要要下载一个编译好的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)。


要想画带添补色的长方形和圆形,能够或许也许也许也许操纵下面的体例:


//设定添补色彩

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>

<tr><td><input type=text name=data></td></tr>

<tr><td><input 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);


// 把每块别离转换成呼应的百分数(360度圆)

for ($y=0; $y<sizeof($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; $z<sizeof($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等,详细的运转情况请随时拜候他们的网站获得最新的材料。

一佰互联是天下着名建站品牌办事商,咱们有九年、网站建造、网页设想、php开辟和域名注册及假造主机办事经历,供给的办事更是天下着名。最近几年来还整合团队上风自立开辟了可视化多用户”“3.0平台版,拖拽排版网站建造设想,轻松完成pc站、手机微网站、小法式、APP一体化全网营销网站扶植 ,已胜利的为天下上百家收集公司供给自助建站平台搭建办事。更多资讯:tags标签

相干消息more

28
03月
开端休会过抖音交际产物多闪后,总感觉还差点什

简介:(文末附有多闪产物司理报告片断) 抖音推出了一款新的交际产物:多闪。这款主打密切交际的产物真的是革新的眼界,咱们的最后的谈天体例仅仅是... >>概况

23
09月
这3种怪异的趋向,能让网页设想减色不少 |

    设想趋向这类东西,往根上说是潮水,是人缘际会之下成为一个时候段内的风行风潮,大多怪异,可是它并不必然合适你的爱好。 ... >>概况

01
05月
php完成的MySQL通用查问法式

if(get_magic_quotes_gpc()==1){ ?> <html> <head><titl... >>概况

11
04月
学会插画的这四种弄法,能让你的UI休会更优良

人是高度视觉化的生物,能够或许也许也许也许当即处置大批的视觉信息,据统计咱们所获得的90%的信息都是视觉化的。单一图象比起大块的文本对用户而言更轻易消化吸... >>概况

高端网站扶植

美工统筹SEO,为企业电子商务营销助力!

德律风:

023-85725751
建站

产物

域名注册 假造主机 云办事器 企业邮局
智能建站 APP打包 微站/小法式 创业平台
网站推行 媒体营销 智能收罗 AI机械人
400德律风 短信营销 店销机械人
私家定制 流派网站