PHP 实现Word,excel等转换pdf
近期做一个项目,须要将用户上传的word,excel文档转成PDF文档保存并打印。在网上找了非常多资料。并不全面,所以自己写了一份比較全面的教程来分享。
以下是操作步骤:
1、 安装免费的openOffice软件。请至openoffice.org下载最新版本号。
2、 JDK支持,请自行搜索下载最新版本号JDK。
3、 安装完openOffice后,在開始--执行中输入Dcomcnfg打开组件服务。在组件服务—计算机—我的电脑—DCOMP配置中,选择
在这两项上分别点击右键属性。打开属性面板例如以下图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvanpoMjAwNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
选择安全选项卡,分别在启动和激活权限和訪问权限两项上点自己定义。加入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或IISserver。
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 实现Word,excel等转换pdf的更多相关文章
- Java解析OFFICE(word,excel,powerpoint)以及PDF的实现方案及开发中的点滴分享
Java解析OFFICE(word,excel,powerpoint)以及PDF的实现方案及开发中的点滴分享 在此,先分享下写此文前的经历与感受,我所有的感觉浓缩到一个字,那就是:"坑&qu ...
- word/excel/ppt 2 PDF
PHP 实现 word/excel/ppt 转换为 PDF 一般最常见的就是利用OpenOffice来转换,来看看实现的核心代码: class PDFConverter { private $com; ...
- C#将Word,Excel与Html,PDF互转
public class OfficeHelper { /// <summary> /// word转成html /// </summary> /// <param na ...
- word,excel,ppt转Pdf,Pdf转Swf,通过flexpaper+swftools实现在线预览
其实这是我好几年前的项目,现在再用这种方式我也不建议了,毕竟未来flash慢慢会淘汰,此方式也是因为目测大部分人都装了flash,才这么做的,但是页面展示效果也不好.其实还是考虑收费的控件,毕竟收费的 ...
- PHP 实现 word/excel/ppt 转换为 PDF
前段时间负责公司内部文件平台的设计,其中有一个需求是要能够在线浏览用户上传的 office 文件. 我的思路是先将 office 转换成 PDF,再通过 pdf.js 插件解析 PDF 文件,使其能在 ...
- DataTable导出为word,excel,html,csv,pdf,.txt
using System; using System.Data; using System.Configuration; using System.Collections; using System. ...
- word,excel,ppt转pdf
第一步 需要下载jar包和jacob-1.14.3-x64.dll * <dependency> * <groupId>net.sf.jacob-project</gro ...
- 21.PHP实现Word/Excel/PPT转换为PDF
参考文档: https://www.cnblogs.com/woider/p/7003481.html http://blog.csdn.net/aoshilang2249/article/detai ...
- java 如何将 word,excel,ppt如何转pdf --openoffice (1)
承上启下,可折叠 上一篇说的是:服务器是windows server时,用jacob将msoffice(指的是word,excel,ppt)转换成pdf. 若被部署项目的服务器是centOS等linu ...
随机推荐
- 《机器学习实战》笔记——regression
本章介绍了不同场景下使用的线性回归方法 一般情况:简单的线性回归 欠拟合:局部加权线性回归 特征数大于样本数:岭回归 或 lasso法 最后引出交叉验证,用来定量地找到最佳参数值 # _*_ codi ...
- 1.ABP使用boilerplate模版创建解决方案
1.到ABP框架的官网(http://www.aspnetboilerplate.com/),自动生成一个解决方案 每步注解: 第一步:AngularJS是一款比较火的SPA(Single Page ...
- 【bzoj4800】[Ceoi2015]Ice Hockey World Championship 折半搜索
题目描述 有n个物品,m块钱,给定每个物品的价格,求买物品的方案数. 输入 第一行两个数n,m代表物品数量及钱数 第二行n个数,代表每个物品的价格 n<=40,m<=10^18 输出 一行 ...
- 选择员工要有3S能力
企业的核心竞争力依托于高素质的员工.不断地对员工进行培训.提升并管理好员工,是让企业持续散发活力的一剂良药. 在企业里,有个说法叫三个房子有一个柱子,第一个是以人为本,怎么样吸引最优秀的员工:第二个是 ...
- C#精髓第四讲 GridView 72般绝技
原文发布时间为:2008-08-03 -- 来源于本人的百度文章 [由搬家工具导入] 原文地址:http://blog.csdn.net/21aspnet/archive/2007/03/25/154 ...
- 关于记忆力:遵从一些原则,自省增加经验,there is a way out of almost everything
年轻人记忆力减退的原因不同于老年人,由疾病所引起的占极少数,一般都是由于学习生活等因素造成精神高度紧张或连续用脑过度使神经疲劳所致. 学会科学的分析和考虑问题的方法,对提高记忆力来说是最为首要的. 保 ...
- hdu 1575(矩阵快速幂)
Tr A Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- TF-IDF 实践
打算分以下几个部分进行 1. 用python写一个爬虫爬取网易新闻 2. 用分词工具对爬下来的文字进行处理, 形成语料库 3. 根据TF-IDF, 自动找出新闻的关键词 4. 根据TF-IDF, 实现 ...
- 你也可以当面霸-MVC的原理及特点
MVC是面试中经常被问到问题,如果能把MVC的原理简单清楚的描述出来,肯定会在面试官的心目中加分. 如果在能画图的情况下,画出一张MVC的流程图,无疑能简化不少概念上的术语,如果不能也不要紧,只要把核 ...
- Debian9安装MariaDB
一:导入密钥并添加了存储库 sudo apt-get install software-properties-common dirmngr sudo apt-key adv --recv-keys - ...