PHP 实现Word,excel等转换pdf

最近做一个项目,需要将用户上传的word,excel文档转成PDF文档保存并打印,在网上找了很多资料,并不全面,所以自己写了一份比较全面的教程来分享。

下面是操作步骤:

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

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

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

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

选择安全选项卡,分别在启动和激活权限和访问权限两项上点自定义,添加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 <[email protected]> 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;
		// 打开文件
		[email protected]($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;
		}
	}

}
时间: 2024-11-08 20:58:46

PHP 实现Word,excel等转换pdf的相关文章

Java解析OFFICE(word,excel,powerpoint)以及PDF的实现方案及开发中的点滴分享

Java解析OFFICE(word,excel,powerpoint)以及PDF的实现方案及开发中的点滴分享 在此,先分享下写此文前的经历与感受,我所有的感觉浓缩到一个字,那就是:"坑",如果是两个字那就是"巨坑"=>因为这个需求一开始并不是这样子的,且听我漫漫道来: 一开始客户与我们商量的是将office和PDF上传,将此类文件解析成html格式,在APP端调用内置server直接以html"播放" 经历一个月~,两个月~,三个月~~~

手机中如何处理Excel格式转换PDF格式

现在不少人操作文件格式的问题大都是在电脑中进行的,那有没有其他工具也能够进行这样的操作呢?如手机,毕竟手机携带起来还比较方便操作起来,说了这么多下面就向大家介绍手机中处理Excel格式转换PDF格式的方法,不会的小伙伴可以看看. 1.说起手机处理文件格式转换的问题,首先手机上需要下载一个转换文件格式的迅捷PDF转换器.使用它来将Excel文件转换为PDF. 2.打开软件进入PDF转换器的首页,点击选择其它文件转换PDF,然后会发现它又分为了word转换PDF.Excel转换PDF.PPT转换PD

java读取WORD/EXCEL模板转换生成新WORD/EXCEL文档

原文:java读取WORD/EXCEL模板转换生成新WORD/EXCEL文档 代码下载地址:http://www.zuidaima.com/share/1550463239670784.htm 可以通过预先设置指定的excel和word模板,通过替换文档里面指定的标志来生成新的excel和word文档.excel的部分只是实现了简单的方法.word部分可以支持word2003和word2007格式.建议word使用07及其以上. 其实excel部分标签和jstl很像,而且支持循环等.word就支

Excel怎么转换PDF文件?

大部分的人都喜欢使用Excel表格来统计数据,在统计的时候是比较方便的,那么我们想要更好的预览的话就需要将这些Excel表格转换成PDF文件的格式,下面就让小编给大家简单的介绍一下. 步骤一:需要将Excel表格转换成PDF我们首先可以在浏览器上进行搜索迅捷PDF在线转换器,进入到在线网站中去:步骤二:在网站的导航栏中我们可以看到文档转换中有Excel转PDF,点击进入即可:步骤三:进入之后就可以进行页码选择,将这些页码进行选择好,然后进行公开文件的选择:步骤四:自定义完成之后就可以将文件选择到

PHP 实现 word/excel/ppt 转换为 PDF

前段时间负责公司内部文件平台的设计,其中有一个需求是要能够在线浏览用户上传的 office 文件. 我的思路是先将 office 转换成 PDF,再通过 pdf.js 插件解析 PDF 文件,使其能在任何浏览器下查看. 可以通过 PHP 的 COM 组件,调用其它能够处理 office 文件的应用程序,利用提供的接口来转换 PDF 文件. OpenOffice OpenOffice 是一套开源跨平台的办公软件,由许多自由软件人士共同来维持,让大家能在 Microsoft Office 之外,还能

DataTable导出为word,excel,html,csv,pdf,.txt

using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.Ht

java 如果将 word,excel,ppt如何转pdf --openoffice (1)

承上启下,可折叠 上一篇说的是:服务器是windows server时,用jacob将msoffice(指的是word,excel,ppt)转换成pdf. 若被部署项目的服务器是centOS等linux server时,就不能用之前的上述说的那种方式了. 在上一篇说到openoffice将msoffice转成pdf的时候会存在排版错位的问题,或者有的内容消失了,这是因为msoffice中的一些特有格式,openoffice不识别解析不了导致的.当然大部分的普通msoffice文档转换成pdf时,

SharePoint 2013 Word 转换PDF服务介绍及示例

原文:SharePoint 2013 Word 转换PDF服务介绍及示例 前言:在SharePoint使用过程中,经常会发现将文档进行格式转换的需求,之前,看到SharePoint 2013有将PPT转换PDF文档的服务,后来,才发现SharePoint 2010开始,就有将Word文档转换PDF的服务了,用起来还是不错的. 下面,我们就来看看这个服务,如何将一个Word文档库批量转换成PDF文件,或者,将单一Word文档转换为PDF文档. 一.             效果展示 新建测试Wor

Atitit.office&#160;word&#160;&#160;excel&#160;&#160;ppt&#160;pdf&#160;的web在线预览方案与html转换方案&#160;attilax&#160;总结

Atitit.office word  excel  ppt pdf 的web在线预览方案与html转换方案 attilax 总结 1. office word  excel pdf 的web预览要求1 1.1. 显示效果要好1 1.2. 可以自定义显示界面1 1.3. 不需要控件,兼容性好1 1.4. 支持编辑操作1 2. 纯html预览解决之道(自由的格式)1 3. 转换swf flash方案2 4. 转换pdf方式..更多的浏览器已经直接支持pdf格式查看2 5. 控件方式2 6. Hyb