千家信息网

php如何将work转为pdf

发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,这篇文章主要介绍php如何将work转为pdf,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!方法:1、打开php.ini文件,添加"extension=php_com_dotn
千家信息网最后更新 2025年11月14日php如何将work转为pdf

这篇文章主要介绍php如何将work转为pdf,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

方法:1、打开php.ini文件,添加"extension=php_com_dotnet.dll"代码,去掉"com.allow_dcom=true"前的";";2、配置office支持;3、利用PDFConverter类中的方法进行转换。

本教程操作环境:windows7系统、PHP7.1版,DELL G3电脑

一、配置PHP扩展

如果是 PHP5.4 以前的版本,需要在 php.ini 里把 com.allow_dcom = true 打开(即去掉前面的分号)。

如果是 PHP5.4 之后的版本,则要在 php.ini 里增加一行扩展 extension = php_com_dotnet.dll

重启 Apache 或 IIS 服务器,打印 phpinfo() 信息,检查 com_dotnet 扩展是开启。

↑ 检查 php 的 ext 目录中 是否存在 com_dotnet.dll 文件,如果没有请自行下载对应版本的 dll

二、配置office支持

OpenOffice 是一套开源跨平台的办公软件,由许多自由软件人士共同来维持,让大家能在 Microsoft Office 之外,还能有免费的 Office 可以使用。

OpenOffice 与微软的办公软件套件兼容,能将 doc、xls、ppt 等文件转换为 PDF 格式,其功能绝对不比 Microsoft Office 差。

OpenOffice 官网:http://www.openoffice.org/

OpenOffice 下载:http://www.openoffice.org/download/index.html

OpenOffice 需要 java 支持,请确认安装了 JDK,并配置了 JRE 环境变量。

1. 配置组件服务

OpenOffice 安装完成之后,按 win+R 快捷键进入运行菜单,输入 Dcomcnfg 打开组件服务。

[组件服务] >> [计算机] >> [我的电脑] >> [DCOM配置] >> [OpenOffice Service Manager]

右键打开属性面板,选择安全选项卡,分别在 启动和激活权限访问权限 上勾选自定义,添加 Everyone 的权限。

↑ 启动和激活权限 和 访问权限 都使用自定义配置

↑ 添加 Everyone 用户组,记得确认前先检查名称

↑ 两个自定义配置相同,允许 Everyone 拥有所有权限

再选择标识选项卡,勾选 交互式用户,保存设置后退出。

2. 后台运行软件

安装完 OpenOffice 后,需要启动一次确认软件可以正常运行,然后再打开命令行运行以下命令:

切换到安装目录: cd C:\Program Files\OpenOffice 4\program

后台运行该软件: soffice -headless-accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard

PS:该命令只需要执行一次,就可以使软件一直在后台运行,即使重启服务器也不受影响。

三、实现文件转换

PDF 转换工具(支持 doc, docx, xls, xlsx, ppt, pptx 等格式)

class PDFConverter{    private $com;    /**     * need to install openoffice and run in the background     * soffice -headless-accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard     */    public function __construct()    {        try {            $this->com = new COM('com.sun.star.ServiceManager');        } catch (Exception $e) {            die('Please be sure that OpenOffice.org is installed.');        }    }    /**     * Execute PDF file(absolute path) conversion     * @param $source [source file]     * @param $export [export file]     */    public function execute($source, $export)    {        $source = 'file:///' . str_replace('\\', '/', $source);        $export = 'file:///' . str_replace('\\', '/', $export);        $this->convertProcess($source, $export);    }    /**     * Get the PDF pages     * @param $pdf_path [absolute path]     * @return int     */    public function getPages($pdf_path)    {        if (!file_exists($pdf_path)) return 0;        if (!is_readable($pdf_path)) return 0;        if ($fp = fopen($pdf_path, 'r')) {            $page = 0;            while (!feof($fp)) {                $line = fgets($fp, 255);                if (preg_match('/\/Count [0-9]+/', $line, $matches)) {                    preg_match('/[0-9]+/', $matches[0], $matches2);                    $page = ($page < $matches2[0]) ? $matches2[0] : $page;                }            }            fclose($fp);            return $page;        }        return 0;    }    private function setProperty($name, $value)    {        $struct = $this->com->Bridge_GetStruct('com.sun.star.beans.PropertyValue');        $struct->Name = $name;        $struct->Value = $value;        return $struct;    }    private function convertProcess($source, $export)    {        $desktop_args = array($this->setProperty('Hidden', true));        $desktop = $this->com->createInstance('com.sun.star.frame.Desktop');        $export_args = array($this->setProperty('FilterName', 'writer_pdf_Export'));        $program = $desktop->loadComponentFromURL($source, '_blank', 0, $desktop_args);        $program->storeToURL($export, $export_args);        $program->close(true);    }}

使用 PDFConverter(必须传入绝对路径)

$arr = array('doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx');$converter = new PDFConverter();foreach ($arr as $ext) {    $source = __DIR__ . '/office/test.' . $ext;    $export = __DIR__ . '/pdf/test.' . $ext . '.pdf';    $converter->execute($source, $export);    echo '

' . $ext . ' Done

';}

以上是"php如何将work转为pdf"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

配置 软件 运行 权限 服务 文件 支持 后台 命令 版本 组件 检查 内容 办公软件 方法 服务器 格式 激活 环境 用户 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 5G通信智能光网络技术 自动接单软件开发 网络安全小常识手抄报图片 二手交易管理系统数据库 我的世界如何离线玩服务器 永安专业软件开发需要多少钱 中国台湾超频服务器电源 服务器u是什么意思 学习网络安全法的简报 浪潮集团软件开发员工黄振阳 数据库避免了数据的冗余 虹口区提供数据库研发服务电话 趣泰科技互联网营销师报考基地 表格不显示重复数据库 软件开发收入确认账务处理 无线网络技术的传输方式 原始守卫战数据库 自己的电脑设置成公网服务器 湖北互联网软件开发正规平台 ftp服务器 断点续传 5G通信智能光网络技术 美国网络安全黑帽 信息网络技术飞速发展 本科的计算机网络技术就业前景 软件开发合同技术约束 学生数据库提交表单 网络安全法的缺点英文文献 网络安全21 指纹机考勤数据库怎么安装 黄陂哪里有计算机软件开发
0