一、配置环境

(1)配置php.ini

添加:extension=php_com_dotnet.dll

com.allow_dcom = true  // 去掉号,改为true

重启环境

(2) 安装:WPS 专业版,或者 microsoft  office 2010

(microsoft office 2007 需要安装加载项:Microsoft Save as PDF)

(3)配置office组件服务

按 win+R 快捷键进入运行菜单,输入 Dcomcnfg

找到:     [组件服务] —— [计算机]—— [我的电脑] —— [DCOM配置] ——【wps……】或[Microsoft Wrord 97-2003文档]

如果没找到【wps……】或(Microsoft Wrord 97-2003文档):

按 win+R 快捷键进入运行菜单

输入:mmc -32

[文件]——[添加或删除管理单元]——[组件服务](从可用管理单元,添加到所选管理单元,点击:确定)

添加完以后,在控制台根节点下,找到【wps……】或[Microsoft Wrord 97-2003文档],右键设置属性,设置“标识”为:交互式用户(还有安全里面的设置 可以看其他文章的设置)

注:我开始 选择交互式用户  : 会出现 我登录远程服务器一切正常,如果退出远程服务器实例化组件就报错,最后选择了 下列用户,填写了管理员用户和密码才正常可用.

二、编写程序

<?php

word2pdf();
function word2pdf()
{
$filenamedoc = dirname(__FILE__)."/index.docx";
$filenamepdf = dirname(__FILE__)."/index.pdf"; $dd = $word = new COM("KWPS.Application") or die ("Could not initialise Object.");
// 或者 $dd = $word = new COM("Word.Application") or die ("Could not initialise Object.");
// set it to 1 to see the MS Word window (the actual opening of the document)
$word->Visible = 0;
// recommend to set to 0, disables alerts like "Do you want MS Word to be the default .. etc"
$word->DisplayAlerts = 0;
// open the word 2007-2013 document $word->Documents->Open($filenamedoc);
// save it as word 2003
// convert word 2007-2013 to PDF //判断要生成的文件名是否存在
if(file_exists($filenamepdf)) {
//存在就删除
unlink ($filenamepdf);
}
$word->ActiveDocument->ExportAsFixedFormat($filenamepdf, 17, false, 0, 0, 0, 0, 7, true, true, 2, true, true, false);
// quit the Word process
$word->Quit(false);
// clean up
unset($word);
if(!function_exists('read_pdf')) {
header('Content-type: application/pdf');
header('filename='.$filenamepdf);
readfile($filenamepdf);
read_pdf('Python_study.pdf');
}
echo 'ok';
} ?>
if(!function_exists('read_pdf')) {
function read_pdf($file) {
if(strtolower(substr(strrchr($file,'.'),1)) != 'pdf') {
echo '文件格式不对.';
return;
}
if(!file_exists($file)) {
echo '文件不存在';
return;
}
header('Content-type: application/pdf');
header('filename='.$file);
readfile($file);
}
}

转: https://my.oschina.net/u/3567851/blog/2909656

https://blog.csdn.net/sangjinchao/article/details/78053545

https://blog.csdn.net/ken2999/article/details/82353747  (组件的权限)

https://www.cnblogs.com/zhuchenglin/p/7586170.html

https://stackoverflow.com/questions/5538584/convert-word-doc-docx-and-excel-xls-xlsx-to-pdf-with-php

https://blog.csdn.net/baidu_27474941/article/details/83268468

php 将office文件(word/excel/ppt)转化为pdf(windows和linux只要安装对应组件应该就行)的更多相关文章

  1. windows环境下 php 将office文件(word/excel/ppt)转化为pdf(转)

    将office文件转化为pdf的方法有 1.利用openoffice提供的服务 (比较简单,但是转化的效果不太好) 2.使用office提供的服务 (注:这在windows服务器上,并且服务器上面安装 ...

  2. Office系列---将Office文件(Word、PPT、Excel)转换为PDF文件,提取Office文件(Word、PPT)中的所有图片

    将Office文件转换为PDF文件,提取Office文件中的所有图片 1.Office系列---将Office文件(Word.PPT.Excel)转换为PDF文件 1.1 基于Office实现的解决方 ...

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

    承上启下,可折叠 上一篇说的是:服务器是windows server时,用jacob将msoffice(指的是word,excel,ppt)转换成pdf. 若被部署项目的服务器是centOS等linu ...

  4. Office系列(1)---将Office文件(Word、PPT、Excel)转换为PDF文件

    需求: 将Office文件作为文章并在网页上预览,主要为(Word.PPT.Excel)3种类型文件. 研究了一下,找到了两种解决方案 直接调用微软的在线预览功能实现(预览前提:预览资源必须可以直接通 ...

  5. Office系列(2)---提取Office文件(Word、PPT)中的所有图片

    回顾一下上文结尾的问题:如何给文档设置一个合适的封面图?其中一个解决方案就是,获取Office文件内部的图片作为封面.这里就详细介绍下获取图片的几种方式,以及他们各自的优缺点. PS:因为之前用VST ...

  6. word,excel,ppt,txt转换为 PDF

    /// <summary> /// 将word文档转换成PDF格式 /// </summary> /// <param name="sourcePath&quo ...

  7. PDF/WORD/EXCEL/PPT 文档在线阅读

    查资料看了2种解决方法: 1.通过办公软件dll转换,用flans去看 2.通过Aspose转换成pdf格式,在用js前台读pdf(我用的pdf.js) 今天我解决的就是WORD/EXCEL/PPT ...

  8. java 如何将 word,excel,ppt如何转pdf--jacob

    问题:java 如果将 word,excel,ppt如何转pdf 我个人的观点:windows server下用 jacob; linux server下 用openoffice.   PS:1.本文 ...

  9. 在线文档转换API word,excel,ppt等在线文件转pdf、png

    在线文档转换API提供word,excel,ppt等在线文件转pdf.png等,文档:https://www.juhe.cn/docs/api/id/259 接口地址:http://v.juhe.cn ...

随机推荐

  1. consul-服务发现、服务隔离、服务配置

    一.服务发现 服务发现组件记录了(大规模)分布式系统中所有服务的信息,其它服务可以据此找到这些服务.DNS 就是一个简单的例子.当然,复杂系统的服务发现组件要提供更多的功能,例如,服务元数据存储.健康 ...

  2. 使用awstats分析nginx日志

    1.awstats介绍 本文主要是记录centos6.5下安装配置awstats,并统计nginx访问日志 1.1 awstats介绍 awstats是一款日志统计工具,它使用Perl语言编写,可统计 ...

  3. 【Python】编程小白的第一本python(最基本的魔法函数)

    Python官网中各个函数介绍的链接:https://docs.python.org/3/library/functions.html 几个常见的词: def (即 define,定义)的含义是创建函 ...

  4. 关于Bigdecimal的问题

    Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算.双精度浮点型变量double可以处理16位有效数.在实际应用中,需要对更大或者更小的数进行 ...

  5. NETTY框架的使用

    一.Netty 简介 Netty 是基于 Java NIO 的异步事件驱动的网络应用框架,使用 Netty 可以快速开发网络应用,Netty 提供了高层次的抽象来简化 TCP 和 UDP 服务器的编程 ...

  6. cookies插件 , axios插件,element-ui 插件

    vue-cookie插件 安装 >: cnpm install vue-cookies main.js配置 // 第一种方式 import cookies from 'vue-cookies' ...

  7. Dubbo源码分析(5):ExtensionLoader

    背景 Dubbo所有的模块加载是基于SPI机制的.在接口名的上一行加个@SPI注解表明要此模块要通过ExtensionLoader加载.基于SPI机制的扩展性比较好,在不修改原有代码,可以实现新模块的 ...

  8. JanusGraph 创建索引步骤(composite index)踩坑总结

    前言 JanusGraph是一个图数据库引擎,安装及入门可以参考 JanusGraph 图数据库安装小记.为了提高查询速度,在使用过程中一般要为某些属性创建索引.这篇随笔主要是记录创建索引过程中踩过的 ...

  9. LightOJ - 1297 - Largest Box(数学)

    链接: https://vjudge.net/problem/LightOJ-1297 题意: In the following figure you can see a rectangular ca ...

  10. ArrayList 集合的几种遍历的方法

    ArrayList 集合  也可称作动态数组(长度可变),在新建的时候是没有默认长度的,在新增数据长度小于10的时候,ArrayList 的长度会自动设置为10 //了解更多可以按住Ctrl 再点击你 ...