php 上传word文件 Word文件转 PDF
说一下,之前的时候做上传word文档转pdf的项目时候, 通过安装open office 连接服务组件, 遇到种种问题, 例如上传的word文档版本,, word文档中编辑的样式复杂会出现转pdf失败抛出异常错误等等,
windows 服务器安装 Microsoft Office 2010 , 安装之后.
php开启dcom扩展
打开php.ini,查找php_com_dotnet和php_com_dotnet
把前面的分号去掉
extension=php_com_dotnet.dll
改为true
com.allow_dcom = true
注意:我先说一下,我Windows安装的是 Microsoft Office 2010哈
打开Windows 服务器按快捷键 win键+R, 输入 comexp.msc -32

打开之后

展开:组件服务->计算机->我的电脑->DCOM配置
寻找安装office办公的组件服务 Microfost Word 97 - 2003文档(如果找不到那就 win键+R输入:dcomcnfg)

找到之后点击属性打开窗口, 点击安全,设置成这样如图

启动和激活权限 和 访问权限 都使用自定义配置
第一:添加 Everyone 用户组,记得确认前先检查名称

第二:点击确定后给Everyone配置此权限

下面
访问权限也是如上面步骤配置权限
配置完成点击Microfost Office - 2003 文档属性顶部的标识菜单

如果是远程桌面连接的服务器你就点击单选: 下列用户然后输入用户名和密码 (为啥呢? 因为如果你单选交互式用户的话, 只有你远程连接服务器的时候才能使用此组件服务,断开远程桌面服务器就会抛出异常错误,所有远程桌面连接服务器的用户, 一定要单选[下列用户]:然后输入连接远程桌面的管理员账号和密码 )
如果是本地的就选择单选: 交互式用户
此时配置完成组件服务了,
接下来就是php代码
public function doword_pdf($source=""D:\www\demo.docx,$export="D:\www\demo.pdf")
{ //连接Microfoset Office服务组件
$word = new COM("Word.Application") or die ("Could not initialise Object.");
if(!$word ){
die ("Word.Application 服务已停止");
}
$word->Visible = 0;
// 建议设置为0,禁用警报,如“你想要MS Word是默认的…等"
$word->DisplayAlerts = 0;
// 打开Word文档,2007-2013 //要处理的word文件 , 这个是绝对文件路径
$word->Documents->Open($source); // save it as word 2003
// convert word 2007-2013 to PDF //要转出的pdf文件 绝对路径
$word->ActiveDocument->ExportAsFixedFormat($export, 17, false, 0, 0, 0, 0, 7, true, true, 2, true, true, false);
// quit the Word process
$word->Quit(false);
// clean up
unset($word);
return $export;
} 获取pdf页数 public function pdf_pagenum($path)
{
$stream = fopen($path, "r");
$content = fread ($stream, filesize($path)); if(!$stream || !$content)
return 0; $count = 0;
// Regular Expressions found by Googling (all linked to SO answers):
$regex = "/\/Count\s+(\d+)/";
$regex2 = "/\/Page\W*(\d+)/";
$regex3 = "/\/N\s+(\d+)/"; if(preg_match_all($regex, $content, $matches))
$count = max($matches); return $count;
}
php 上传word文件 Word文件转 PDF的更多相关文章
- .Net neatupload上传控件实现文件上传的进度条
1. 引入bin文件 (可以到neatupload官网下载,也可以到教育厅申报系统中找) 2. 将控件加入到工具栏,在工具栏中点鼠标右键,如图: 3. 加入neatuplaod这个文件夹(可以到nea ...
- input上传指定类型的文件
1. 谷歌–上传文件夹 添加属性webkitdirectory <input type = "file" webkitdirectory> 2. 上传文件–限制类型 添 ...
- PHP上传(单个)文件示例
通过 PHP,可以把文件上传到服务器. 创建一个文件上传表单 允许用户从表单上传文件是非常有用的. 请看下面这个供上传文件的 HTML 表单: <html> <body> &l ...
- SharePoint 2010 ——自定义上传页面与多文件上传解决方案
最近项目遇到一个很麻烦的问题,原以为很容易解决,结果搞了那么久,先开个头,再慢慢写 SharePoint 2010 ——自定义上传页面与多文件上传解决方案 1.创建Sharepoint空白项目,创建应 ...
- echo "不允许上传该类型的文件
<?php教程 // 上传设置 $maxsize=10002400; //最大允许上传的文件大小 $alltype=array(".php"," ...
- php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
网上有很多php文件上传的类,文件上传处理是php的一个特色(至少手册上是将此作为php特点来展示的,个人认为php在数组方面的优异功能更有特 色),学php的人都知道文件上传怎么做,但很多人在编程中 ...
- ASP无惧上传类不能上传中文双引号文件及ASP函数InStr存在bug
ASP无惧上传类不能上传中文双引号文件及ASP函数InStr存在bug 近日发现eWebEditor V2.8 asp 版本上传文件文件名不能包含中文双引号,发现eWebEditor使用ASP“无惧上 ...
- Python 一键上传下载&一键提交文件到SVN入基线工具
一键上传下载&一键提交文件到SVN入基线工具 by:授客 QQ:1033553122 实现功能 1 测试环境 1 使用说明 1 注: 根据我司项目规则订制的一套工具,集成以下功能,源码 ...
- django设置并获取cookie/session,文件上传,ajax接收文件,post/get请求及跨域请求等的方法
django设置并获取cookie/session,文件上传,ajax接收文件等的方法: views.py文件: from django.shortcuts import render,HttpRes ...
- phpmyadmin-您可能正在上传很大的文件,请参考文档来寻找解决方法
phpmyadmin-您可能正在上传很大的文件,请参考文档来寻找解决方法 实这个很简单的只要更改php.ini里三个配置即可.(见下面加粗部分,改成你自己的需求即可) ; Maximum allo ...
随机推荐
- ceph存储基础概念
一.分布式文件系统: 是指文件系统管理的物理存储资源不一定直接是连接在本地节点上,而是通过计算机网络与节点相连. 分布式文件系统的设计基与C/S架构(客户端/服务器) 常见的分布式文件系统:Ceph. ...
- 关于selenium自动化对窗口句柄的处理
首先什么是句柄?句柄就是你点击一个页面,跳转了一个新的窗口.你要操作的元素可能在原窗口上,也有可能在新窗口上. 看下图句柄1 句柄2 由这2张图可知,url不一样,证明他们是处于不同的界面,我要操作的 ...
- Springboot + Stopping service [Tomcat]+ Process finished with exit code 0
在Springboot 的版本为: <version>1.5.10.RELEASE</version> 原因:代码中有非法格式的结构,及代码写错啦,例如: <result ...
- 版本管理·玩转git(快速入门git)
如果你用过Word文档写过文章,那么你一定会有这样的经历. 我觉得某一段或者某一句写得不够好,但是,删掉之后我可能会后悔把它删掉了,进而又想把删掉的段落找回来,这时,你想到了一个好办法,将每次的修改都 ...
- CTPN
1. https://zhuanlan.zhihu.com/p/34757009 (原理) 2. https://www.jianshu.com/p/471bdbd0170d (bi-LSTM)
- CSS3开启硬件加速
{ transform: translateZ(0); transform: translate3d(0,0,0);}<!-- transform: translateZ(0); transfo ...
- python 26 反射
目录 1. 类的反射 1.1 实例对象 1.2 类 1.3 其他模块 -- 其他.py文件 1.4 本模块 -- 当前.py文件 2. 函数与方法的区别 2.1区别的方法: 2.2 总结 3. 特殊的 ...
- C#开发BIMFACE系列16 服务端API之获取模型数据1:查询满足条件的构件ID列表
系列目录 [已更新最新开发文章,点击查看详细] 源文件/模型转换完成之后,可以获取模型的具体数据.本篇介绍根据文件ID查询满足条件的构件ID列表. 请求地址:GET https://api.b ...
- GIS基础知识 - 坐标系、投影、EPSG:4326、EPSG:3857
最近接手一个GIS项目,需要用到 PostGIS,GeoServer,OpenLayers 等工具组件,遇到一堆地理信息相关的术语名词,在这里做一个总结. 1. 大地测量学 (Geodesy) 大地测 ...
- HTML(六)框架,颜色,脚本,字符实体,统一资源定位器
HTML 框架 HTML框架 通过使用框架,你可以在同一个浏览器窗口中显示不止一个页面 Iframe移除边框 使用iframe来显示目标链接页面 RUNOOB.COM HTML 颜色 rgb(255, ...