PHP 实现切割pdf,轻松实现用PHP编写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文档有了基本的了解了吧。下面,我们就以一个实际的例子来看看如何为我们的工作服务。这个例子就是根据提供的数据来生成饼图,首先,建立一个数据输入表单,输入饼图中每一块的大小。文件如下:
以下为引用的内容:
利用PHP创建PDF文档(饼图)
饼图生成器
请输入饼图中每一块的数据值,以(,)分割开: |
下面是pie.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
$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
{
// 设定填充颜色
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 实现切割pdf,轻松实现用PHP编写PDF文档生成器(二)相关推荐
- Solid Converter PDF10.1Crack,将pdf表转换为可编辑的Excel文档
Solid Converter PDF10.1Crack,将pdf表转换为可编辑的Excel文档 Solid Converter PDF是Solid Documents的软件,可将PDF文档转换为Wo ...
- html document怎么转换成word,Doxillion Document Converter – 将 DOC、DOCX、PDF、WPS、Word、HTML文档格式互相转换...
在办公领域经常会遇到各种各样的文件格式,因此常常有DOC.DOCX.PDF.WPS.Word.HTML 等各种不同格式的文档互相转换的需求.虽然网上有很多在线转换网站或 文档格式转换软件,不过今天推荐 ...
- 纯前端导出word、pdf、excel、txt、svg文档方法与技巧(附带问题总结)
文章目录 导出pdf **实现思路:** **问题总结:** **具体代码** **封装好的导出函数,记得引入js插件** 封装方法一: 封装方法二: 封装方法三: 纯前端导出word文档方法与技巧 ...
- java给word和pdf文档添加二维码
背景 目前收到一个需求,需要给上传的word和pdf文档添加二维码,防止职工给领导签字时伪造合同,所以提出这个需求,上传的word和pdf添加二维码,然后使用我们的app扫码查看相关的信息. 解决方案 ...
- 打印pdf文件 vfp_新技能,如何将多份pdf电子发票文件合成一份文档打印
作为一名行政人员,每个月都会有大量的发票需要处理.特别是到了年底,更是会有大量的电子发票需要存档.打印.报销等. 如果将大量的电子发票分别打印到A4纸上,会造成资源大量的浪费,不利于行政办公室节约的主 ...
- python:pdf转文字(在线和本地文档)
在线文档: #encoding=utf-8 from urllib.request import urlopen from pdfminer.pdfinterp import PDFResourceM ...
- 教大家如何把pdf转成dwg格式的cad文档
之前我有教大家如何将cad文档转换成pdf格式文档,又有人问我如何转回去,就是把pdf格式文档转换成cad文档.我们对cad文档的学习和了解要不断地学习和使用,渐渐地积累知识和经验.这样才能保证在以后 ...
- XPS文件转换为PDF不再愁!全新XPS/EPS文档处理神器Aspose.Page来啦!
近月,针对Aspose.XPS和Aspose.EPS做了一些改动,将其合并成Aspose.Page,同样可以使用现有许可证访问这两种产品的所有功能. Aspose.Page (点击下载)是集成On-P ...
- pdf转word转换器在线版,文档转换和处理都在这里了
在线PDF转换器可以做些什么工作呢?PDF在线转换器是一种可以转换各种常见办公文档的线上转换平台,支持一站式解决日常工作中绝大部分的文档转换需求.除此之外,在线迅捷PDF转换器还提供PDF文档处理,编 ...
最新文章
- 重温强化学习之策略梯度算法
- JQuery 总结(7) index() data() each() 选项卡 表单验证
- MySQL高级 - MyISAM特性
- Unity3D 旋转
- git 操作二进制文件
- MySQL自用脚本(不定期更新)
- windows 查看网络中断事件_等保测评2.0:Windows安全审计
- android 折叠式布局,Android卡片式折叠交互效果
- mysql三高讲解(二):2.3 InnoDB索引即数据
- python爬取网页原理_网页基本构成和抓取原理
- 提供一个vs2010 sp1的下载
- matlab中数组的创建
- Excel数据分析—柱状图
- 定罪了!“女版乔布斯”有可能入狱20年
- Echarts 柱状图上方显示数值
- PageHelper.startPage();的使用
- 金融量化-基于K线形态锤子线的趋势跟踪策略
- 21 天零基础入门机器学习 , 高薪 Offer 就在眼前
- 观察者模式——气象局高温预警
- IDC运维如何转linux运维,智简魔方DCIM系统助力IDC运维人员解决难题