PHP创建PowerPoint2007文档的方法

本文实例讲述了PHP创建PowerPoint2007文档的方法。分享给大家供大家参考,具体如下:

今天早上从订阅的 Zend DevZone 看到篇很有意思的文章. 试了一下. 果然很又意思, 分享给大家吧.

程序需要 PHP 5.2 以上环境, 另外需要 php_zip 和 php_xml 扩展模块支持. 另外需要下载 PHPPowerPoint 类库. 官方网站地址: http://phppowerpoint.codeplex.com/ 目前稳定版本是 0.1.0。也可点击此处本站下载。

说一下感觉吧. 这个类库还可以. 编码很规范. 完全PHP5的风格. 我喜欢的类型. 和 Zend Framework 一样. 处理速度也非常快. 本次只做了简单才测试. 更多高级功能未花时间去玩. 帖一下测试代码吧.

<?php
/**
 * PHP 生成 PowerPoint 2007 示例脚本.
 *
 * 本程序需要 PHP 5.2 以上版本, 需要 php_zip 和 php_xml 扩展支持.
 * 通常WIN下程序只要打开 php_zip 扩展即可, php_xml 扩展内置支持.
 * Linux 下需要根据编译条件具体调整.
 *
 * @author: Guya
 * @since: 2009-4-30
 */
//目录分割符号
define('DS', DIRECTORY_SEPARATOR);
//定义根目录
define('ROOT', dirname(__FILE__) . DS);
//修改include路径, PHPPowerPoint 包放在当前目录的 libs 目录下.
set_include_path(get_include_path() . PATH_SEPARATOR . ROOT . 'libs');
//不限制脚本运行时间限制.
set_time_limit(0);
//简单设置自动载入函数.
function __autoload($className) {
 include_once(str_replace("_", DS, $className) . ".php");
}
//新建立一个 PHPPowerPoint 对象.
$ppp = new PHPPowerPoint();
//获取当前使用的一页幻灯片
$activeSlide = $ppp->getActiveSlide();
//添加一个图片到幻灯片.
$shape = $activeSlide->createDrawingShape();
//设置图片名称.
$shape->setName('MmClub.net Logo');
//设置图片的描述信息.
$shape->setDescription('MmClub.net Logo');
//图片实际路径
$shape->setPath(ROOT . 'mmclub.net.jpg');
//图片高度
$shape->setHeight(103);
//设置图片宽度
$shape->setWidth(339);
//设置图片相对于左上角X位置, 单位像素
$shape->setOffsetX(10);
//设置图片相对于左上角Y位置, 单位像素
$shape->setOffsetY(10);
//设置图显示状态
$shape->getShadow()->setVisible(true);
$shape->getShadow()->setDirection(45);
$shape->getShadow()->setDistance(10);
//设置一个文本框
$shape = $activeSlide->createRichTextShape();
//设置文本框高度, 单位像素
$shape->setHeight(150);
//设置文本框宽度, 单位像素
$shape->setWidth(600);
//设置文本框相对于左上角X位置, 单位像素
$shape->setOffsetX(150);
//设置文本框相对于左上角Y位置, 单位像素
$shape->setOffsetY(200);
//设置文本布局位置为水平居中, 垂直居中.
$shape->getAlignment()->setHorizontal( PHPPowerPoint_Style_Alignment::HORIZONTAL_CENTER );
$shape->getAlignment()->setVertical( PHPPowerPoint_Style_Alignment::VERTICAL_CENTER );
//设置文本框文本内容. 在中文环境下测试没中文问题. 如果在 e 文环境. 注意要指定支持中文的字体. 否则可能出乱码了.
$textRun = $shape->createTextRun('欢迎使用 PHPPowerPoint2007');
//使用字体加粗
$textRun->getFont()->setBold(true);
//设置字体尺寸为 38, 这里注意一下文字的大小设置. 前面的文本框的大小是固定的. 如果文字超出的容器会被出容器被排到下面
$textRun->getFont()->setSize(38);
//设置文字颜色, 这里是ARGB模式 , 16进制模式, 前面2位为透明度, 后面为RGB值. 这里设置为 blue蓝色
$textRun->getFont()->setColor( new PHPPowerPoint_Style_Color( 'FFFF0000' ) );
//下面再设置几个文本框
$shape0 = $activeSlide->createRichTextShape();
$shape0->setHeight(50);
$shape0->setWidth(400);
$shape0->setOffsetX(250);
$shape0->setOffsetY(400);
$shape0->getAlignment()->setHorizontal( PHPPowerPoint_Style_Alignment::HORIZONTAL_CENTER );
$shape0->getAlignment()->setVertical( PHPPowerPoint_Style_Alignment::VERTICAL_CENTER );
$textRun0 = $shape0->createTextRun('http://www.jb51.net');
$textRun0->getFont()->setSize(26);
$textRun0->getFont()->setColor( new PHPPowerPoint_Style_Color( 'FF0000FF' ) );
$shape1 = $activeSlide->createRichTextShape();
$shape1->setHeight(30);
$shape1->setWidth(200);
$shape1->setOffsetX(700);
$shape1->setOffsetY(500);
$shape1->getAlignment()->setHorizontal( PHPPowerPoint_Style_Alignment::HORIZONTAL_LEFT );
$shape1->getAlignment()->setVertical( PHPPowerPoint_Style_Alignment::VERTICAL_CENTER );
$textRun1 = $shape1->createTextRun('Author: Guya');
$textRun1->getFont()->setSize(14);
$textRun1->getFont()->setColor( new PHPPowerPoint_Style_Color( 'FF000000' ) );
$shape2 = $activeSlide->createRichTextShape();
$shape2->setHeight(30);
$shape2->setWidth(200);
$shape2->setOffsetX(700);
$shape2->setOffsetY(540);
$shape2->getAlignment()->setHorizontal( PHPPowerPoint_Style_Alignment::HORIZONTAL_LEFT );
$shape2->getAlignment()->setVertical( PHPPowerPoint_Style_Alignment::VERTICAL_CENTER );
$textRun2 = $shape2->createTextRun('Date: 2009-4-30');
$textRun2->getFont()->setSize(14);
$textRun2->getFont()->setColor( new PHPPowerPoint_Style_Color( 'FF000000' ) );
//保存PPTX 文件, 使用 2007 格式
$objWriter = PHPPowerPoint_IOFactory::createWriter($ppp, 'PowerPoint2007');
//保存文件
$objWriter->save(ROOT . 'myPhpPpt.pptx');
echo 'ppt create success!';
?>

这个东西的应用前景的话. 在WEB的某些场合还是很有用的. 需要的朋友可以多花点时间去研究了

希望本文所述对大家php程序设计有所帮助。

(0)

相关推荐

  • ThinkPHP调用百度翻译类实现在线翻译

    要实现ThinkPHP在线翻译功能,需要先在百度开发者中心注册一个API key,具体实现代码如下: action代码部分: <?php class FanyiAction extends Action { public function _empty(){ header("HTTP/1.0 404 Not Found"); $this->display("Public:404"); } public function index() { $User =

  • flash+php+mysql打造简单留言本教程第1/3页

    (主要参考了火山的帖子:★FLASH与ASP通信入门教程--做真正属于自己的留言本!).网上没有比较好的php留言本相关教程,我下载的N多源文件都看得云里雾里,而且好多都将代码写在MC上.又或许可能有好的教程我没搜到,但无论如何,我现在要在这里班门弄斧一番了. flash+php+mysql简单留言本教程 目的: 用flash+php+mysql制作一个简单的留言本. 配置环境: 最开始肯定是先配置相应的环境了.我下载的是配置环境套件包,傻瓜式的方法,简易安装,比较适合我.下载地址:http:/

  • php检查页面是否被百度收录

    最近需要检测网站内哪些页面没有被百度搜索引擎收录从而进行相关的调整.由于使用site命令一条条的去看实在是看不过来,就想到了使用php程序来批量处理一下,研究了一下,发现其实很简单,下面就将使用php实现的检测页面是否被百度收录的功能分享一下. 下面是具体代码: <?php /* * 检测网页是否被百度收录,返回1则表示收录 返回0表示没有收录 * @ param string $url 待检测的网址 */ function checkBaiduInclude($url){ $url='http

  • 自定义php类(查找/修改)xml文档

    近期在看PHP的教学视频,其中讲到了 PHP 操作 xml 文档,学了点儿 DOMDocument 类.自己查手册又全英文,看不大懂.但还是自己写了个类,实现了查找 xml 节点,并修改节点值.背景解说完毕,且看代码如下: 复制代码 代码如下: /* <?xml version="1.0" encoding="UTF-8"?> <班级> <学生 number="101"> <名字>孙悟空</名

  • php获取网站百度快照日期的方法

    本文实例讲述了php获取网站百度快照日期的方法.分享给大家供大家参考.具体如下: <html> <head> <title>在线演示_php获取某网站的快照时间</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="keywords" content=&qu

  • PHP生成Flash动画的实现代码

    其中有一组映射到 SWF 动画中的数据类型的对象:子图形.图形.文本.位图等等.在本文中,我使用了预编译的扩展 php_ming.dll 库用于 Windows 版本的 PHP. 清单 2 显示了使用 Ming 库实现的 HelloWorld 示例. 清单 2. Hello.php <?php$f = new SWFFont( '_sans' ); $t = new SWFTextField();$t->setFont( $f );$t->setColor( 0, 0, 0 );$t-&

  • php获取百度收录、百度热词及百度快照的方法

    本文实例讲述了php获取百度收录.百度热词及百度快照的方法.分享给大家供大家参考.具体如下: 获取百度收录: <?php /* 抓取百度收录代码 */ function baidu($s){ $baidu="http://www.baidu.com/s?wd=site%3A".$s; $site=file_get_contents($baidu); //$site=iconv("gb2312", "UTF-8", $site); ereg(

  • 使用PHP导出Word文档的原理和实例

    原理 一般,有2种方法可以导出doc文档,一种是使用com,并且作为php的一个扩展库安装到服务器上,然后创建一个com,调用它的方法.安装过office的服务器可以调用一个叫word.application的com,可以生成word文档,不过这种方式我不推荐,因为执行效率比较低(我测试了一下,在执行代码的时候,服务器会真的去打开一个word客户端).理想的com应该是没有界面的,在后台进行数据转换,这样效果会比较好,但是这些扩展一般需要收费.第2种方法,就是用PHP将我们的doc文档内容直接写

  • PHP计算百度地图两个GPS坐标之间距离的方法

    本文实例讲述了PHP计算百度地图两个GPS坐标之间距离的方法.分享给大家供大家参考. 具体实现方法如下: 复制代码 代码如下: /**  * 计算两个坐标之间的距离(米)  * @param float $fP1Lat 起点(纬度)  * @param float $fP1Lon 起点(经度)  * @param float $fP2Lat 终点(纬度)  * @param float $fP2Lon 终点(经度)  * @return int  */ function distanceBetw

  • php使用百度ping服务代码实例

    代码实例: <?php function postUrl($url, $postvar) { $ch = curl_init(); $headers = array( "POST".$url."HTTP/1.0", "Content-type: text/xml; charset=\"gb2312\"", "Accept: text/xml", "Content-length: "

  • 用PHP动态创建Flash动画

    Macromedia 公司出品的 Flash 动画软件现已经成为Web页面上非常流行的表现工具,网站开发者利用它引起浏览者的兴趣.然而不幸的是,仅仅使用ActionScript创建动画受到很大的限制,Macromedia已经宣布,打算放弃Flash Generator产品,转而采用支持Flash MX的Cold Fusion,我们的网站将向何处去呢?现在,我们可以利用Ming PHP库来轻松地动态创建Flash动画,并且和我们的代码无缝集成.我们可以根据数据库里的数据创建出各种不同效果的动画.

  • PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)

    本文实例讲述了PHP实现仿百度文库,豆丁在线文档效果.分享给大家供大家参考,具体如下: 由于项目要实现类似百度文库的功能,又是我一个人做的项目,所以就想到找免费的现成的来使用.在网上找到的都是一样的.如下: Flash Paper支持Office文档(.doc,.xls,.ppt)直接转换为PDF或SWF,速度很快,效果较好.可惜,Flash Paper V2.2后没有再更新了.安装Flash Paper后,可以直接使用命令调用FlashPrinter.exe,实现批量转换. 例如:C:\Fla

  • php生成百度sitemap站点地图类函数实例

    本文实例讲述了php生成百度sitemap站点地图类函数的方法,分享给大家供大家参考.具体实现方法如下: 问题概述: 公司网站是问答百科的网站.seo工程师提出需求说根据网站的问题来生成xml文件.每个xml文件包含5000条setmap格式数据.现在线上网站大约有70w条问题,所以说基本生成140个xml文件.还有一个索引文件.比如文件的名称以数字开头的.索引文件包含的内容就是每个xml文件的路径还有名称. 为什么要每个文件存储5000条数据呢,因为这是mysql的一个界限值.如果每次取多了以

随机推荐