从上面的例子可以看出,要画一条直线,只需要三个函数即可: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文档生成器(二)相关推荐

  1. Solid Converter PDF10.1Crack,将pdf表转换为可编辑的Excel文档

    Solid Converter PDF10.1Crack,将pdf表转换为可编辑的Excel文档 Solid Converter PDF是Solid Documents的软件,可将PDF文档转换为Wo ...

  2. html document怎么转换成word,Doxillion Document Converter – 将 DOC、DOCX、PDF、WPS、Word、HTML文档格式互相转换...

    在办公领域经常会遇到各种各样的文件格式,因此常常有DOC.DOCX.PDF.WPS.Word.HTML 等各种不同格式的文档互相转换的需求.虽然网上有很多在线转换网站或 文档格式转换软件,不过今天推荐 ...

  3. 纯前端导出word、pdf、excel、txt、svg文档方法与技巧(附带问题总结)

    文章目录 导出pdf **实现思路:** **问题总结:** **具体代码** **封装好的导出函数,记得引入js插件** 封装方法一: 封装方法二: 封装方法三: 纯前端导出word文档方法与技巧 ...

  4. java给word和pdf文档添加二维码

    背景 目前收到一个需求,需要给上传的word和pdf文档添加二维码,防止职工给领导签字时伪造合同,所以提出这个需求,上传的word和pdf添加二维码,然后使用我们的app扫码查看相关的信息. 解决方案 ...

  5. 打印pdf文件 vfp_新技能,如何将多份pdf电子发票文件合成一份文档打印

    作为一名行政人员,每个月都会有大量的发票需要处理.特别是到了年底,更是会有大量的电子发票需要存档.打印.报销等. 如果将大量的电子发票分别打印到A4纸上,会造成资源大量的浪费,不利于行政办公室节约的主 ...

  6. python:pdf转文字(在线和本地文档)

    在线文档: #encoding=utf-8 from urllib.request import urlopen from pdfminer.pdfinterp import PDFResourceM ...

  7. 教大家如何把pdf转成dwg格式的cad文档

    之前我有教大家如何将cad文档转换成pdf格式文档,又有人问我如何转回去,就是把pdf格式文档转换成cad文档.我们对cad文档的学习和了解要不断地学习和使用,渐渐地积累知识和经验.这样才能保证在以后 ...

  8. XPS文件转换为PDF不再愁!全新XPS/EPS文档处理神器Aspose.Page来啦!

    近月,针对Aspose.XPS和Aspose.EPS做了一些改动,将其合并成Aspose.Page,同样可以使用现有许可证访问这两种产品的所有功能. Aspose.Page (点击下载)是集成On-P ...

  9. pdf转word转换器在线版,文档转换和处理都在这里了

    在线PDF转换器可以做些什么工作呢?PDF在线转换器是一种可以转换各种常见办公文档的线上转换平台,支持一站式解决日常工作中绝大部分的文档转换需求.除此之外,在线迅捷PDF转换器还提供PDF文档处理,编 ...

最新文章

  1. 重温强化学习之策略梯度算法
  2. JQuery 总结(7) index() data() each() 选项卡 表单验证
  3. MySQL高级 - MyISAM特性
  4. Unity3D 旋转
  5. git 操作二进制文件
  6. MySQL自用脚本(不定期更新)
  7. windows 查看网络中断事件_等保测评2.0:Windows安全审计
  8. android 折叠式布局,Android卡片式折叠交互效果
  9. mysql三高讲解(二):2.3 InnoDB索引即数据
  10. python爬取网页原理_网页基本构成和抓取原理
  11. 提供一个vs2010 sp1的下载
  12. matlab中数组的创建
  13. Excel数据分析—柱状图
  14. 定罪了!“女版乔布斯”有可能入狱20年
  15. Echarts 柱状图上方显示数值
  16. PageHelper.startPage();的使用
  17. 金融量化-基于K线形态锤子线的趋势跟踪策略
  18. 21 天零基础入门机器学习 , 高薪 Offer 就在眼前
  19. 观察者模式——气象局高温预警
  20. IDC运维如何转linux运维,智简魔方DCIM系统助力IDC运维人员解决难题

热门文章

  1. 白话讲排序系列(六) 堆排序(绝对让你明白堆排序!)
  2. 根据天数(46)计算周数和剩余的天数
  3. 安卓开发-基础知识补习2
  4. 为什么我们缺乏多样的人生态度
  5. 力扣55.跳跃游戏(比较简单)
  6. GIS专业学生的毕业出路,我们该何去何从?
  7. 2023计算机毕业设计SSM最新选题之java企业绩效考核系统x73jw
  8. DSP CRM 销售管理系统
  9. 2021年秋招面经分享·商汤【22领航员-工程院-芯片设计工程师】
  10. simulink入门2--机器人控制系统仿真