PHP实现Word与excel等转换pdf方法

2015-07-15 0 432

下面是操作步骤:

1、        安装免费的openOffice软件,请至openoffice.org下载最新版本。

2、        JDK支持,请自行搜索下载最新版本JDK。

3、        安装完openOffice后,在开始–运行中输入Dcomcnfg打开组件服务。在组件服务—计算机—我的电脑—DCOMP配置中,选择

PHP实现Word与excel等转换pdf方法

在这两项上分别点击右键属性,打开属性面板如下图:

PHP实现Word与excel等转换pdf方法

选择安全选项卡,分别在启动和激活权限和访问权限两项上点自定义,添加Everyone的权限。

选择标识选项卡,选择交互式用户。

 

4、        安装完openOffice后,请先打开一次确认可以正常运行软件,然后退出后用命令行运行以下命令。

先到安装目录下,例如:C:\\Program Files\\OpenOffice 4\\program\\

执行命令:

soffice -headless-accept=\”socket,host=127.0.0.1,port=8100;urp;\” -nofirststartwizard

成功后即在后台运行了该软件。

 

5、        如果是php5.4.5以前版本,需要在php.ini里把com.allow_dcom = true打开,即去掉前面的分号。如果是以后版本,需要在php.ini 里增加一行扩展extension=php_com_dotnet.dll,然后检查php的ext目录中是否存在该dll文件,如果没有请自行下载对应版本的dll。然后重启apache或IIS服务器。

6、        代码实现

/**
 * office文档转换为PDF类
 * @author jinzhonghao <954299193@qq.com> created 2015-04-23
 */


class office2pdf
{
	private $osm;
	
	public function __construct()
	{
		$this->osm = new COM(\"com.sun.star.ServiceManager\")or die (\"Please be sure that OpenOffice.org is installed.n\"); 
	}
	
	public function MakePropertyValue($name,$value)
	{
		$oStruct = $this->osm->Bridge_GetStruct(\"com.sun.star.beans.PropertyValue\");
		$oStruct->Name = $name;
		$oStruct->Value = $value;
		return $oStruct;
	}
	
	public function transform($input_url, $output_url)
	{
		$args = array($this->MakePropertyValue(\"Hidden\",true));

		$oDesktop = $this->osm->createInstance(\"com.sun.star.frame.Desktop\");

		$oWriterDoc = $oDesktop->loadComponentFromURL($input_url,\"_blank\", 0, $args);

		$export_args = array($this->MakePropertyValue(\"FilterName\",\"writer_pdf_Export\"));

		$oWriterDoc->storeToURL($output_url,$export_args);
		$oWriterDoc->close(true);
		return $this->getPdfPages($output_url);
	}
	
	public function run($input,$output)
	{
		$input = \"file:///\" . str_replace(\"\\\\\",\"/\",$input);
		$output = \"file:///\" . str_replace(\"\\\\\",\"/\",$output);
		return $this->transform($input, $output);
	}
	
	/**
	 * 获取PDF文件页数的函数获取
	 * 文件应当对当前用户可读(linux下)
	 * @param  [string] $path [文件路径]
	 * @return int
	 */
	public function getPdfPages($path)
	{
		if(!file_exists($path)) return 0;
		if(!is_readable($path)) return 0;
		// 打开文件
		$fp=@fopen($path,\"r\");
		if (!$fp) 
		{
			return 0;
		}
		else 
		{
			$max=0;
			while(!feof($fp)) 
			{
				$line = fgets($fp,255);
				if (preg_match(\'/\\/Count [0-9]+/\', $line, $matches))
				{
					preg_match(\'/[0-9]+/\',$matches[0], $matches2);
					if ($max<$matches2[0]) $max=$matches2[0];
				}
			}
			fclose($fp);
			// 返回页数
			return $max;
		}
	}

}

遇见资源网 PHP PHP实现Word与excel等转换pdf方法 http://www.ox520.com/22169.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务