返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php怎么将work转为pdf
  • 227
分享到

php怎么将work转为pdf

phpworkpdf 2017-06-01 23:06:09 227人浏览
摘要

方法: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;    
    public function __construct()
    {        try {            $this->com = new COM('com.sun.star.ServiceManager');
        } catch (Exception $e) {            die('Please be sure that OpenOffice.org is installed.');
        }
    }    
    public function execute($source, $export)
    {        $source = 'file:///' . str_replace('\\', '/', $source);        $export = 'file:///' . str_replace('\\', '/', $export);        $this->convertProcess($source, $export);
    }    
    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 '<p>' . $ext . ' Done</p>';
}

--结束END--

本文标题: php怎么将work转为pdf

本文链接: https://www.lsjlt.com/news/241.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • php怎么将ip转为城市
    php将ip转为城市的方法:1、创建一个PHP示例文件;2、获取具体的IP地址;3、通过“function get_tag_data($html,$tag){...}”等方法将ip转为城市地址即可。 ...
    899
    2023-03-22
    php ip 城市
  • php怎么将字符转为实体
    php将字符转为实体的方法:1、使用htmlentities()函数,可把字符转换为HTML实体;2、使用htmlspecialchars()函数,可把一些预定义的字符(“&”、“<”、“>”等)转换为HTML实体。 ...
    280
    2023-03-22
    php 字符转实体
  • php怎么将值转为整数
    方法:1、在值之前加上“(int)”或“(integer)”,例“3.14(int)”;2、用intval()函数,语法“intval(值)”;3、用ceil()函数,语法“ceil(值)”;4、用floor函数,语法“floor(值)”。 ...
    953
    2023-03-22
    php 整数
  • php怎么将整数转为16进制
    php将整数转为16进制的方法:1、使用dechex()函数,语法“dechex(整数值)”;2、使用base_convert()函数,语法“bindec(整数值, 10, 16)”。 ...
    591
    2023-03-22
    php 进制转换 十进制转十六进制
  • php怎么将string转为日期格式
    转换为日期格式的方法:1、使用“strtotime($string)”语句,将指定字符串类型的日期时间文本转为时间戳;2、使用“date("Y-m-d H:i:s",时间戳)”语句格式化时间戳,将其转为“年-月-日 时:分:秒”的日期格式。 ...
    638
    2023-03-22
    php php日期时间
  • php怎么将数组转为索引数组
    两种转换方法:1、使用array_values()函数将数组转为索引数组,会将原键名转为从0开始且以1递增的数字键名,语法“array_values($arr)”。2、定义一个空数组,利用foreach语句循环遍历原数组,在循环体中将原数组的键值传入空数组即可,语法“$res=[];foreach($arr as $v){$res[]=$v;}”。本教程操作环境:windows7系统、PHP8.1版 ...
    900
    2023-03-22
    php数组 php
  • php怎么将数组转为json数据
    在php中,可以使用json_encode()函数来将数组转化为json格式数据,语法为“json_encode(数组变量,$options)”。json_encode()函数能对PHP变量进行JSON编码,如果转化成功则返回JSON格式数据,如果转化失败则会返回FALSE。php零基础到就业直播视频课:进入学习本教程操作环境:windows7系统、PHP8.1版、DELL G3电脑php将数组转为 ...
    435
    2023-03-22
    php php数组
  • php怎么将字母转为10进制数
    在php中,可以利用ord()函数来将字母转为10进制数,该函数可以返回单个字符的ASCII值,或字符串中第一个字符的ASCII值,语法“ord("指定字母")”。 ...
    920
    2023-03-22
    php 字母转为10进制数
  • php怎么将字符串转为小数
    php将字符串转为小数的方法:1、使用number_format()函数,语法“number_format($str,小数位数值)”;2、利用sprintf()函数格式化字符串,语法“sprintf("%.小数位数值f",$str)”。 ...
    234
    2023-03-22
    php 字符串转小数
  • php怎么将int(整数)类型转为小数
    转换方法:1、使用number_format()函数,语法“number_format(int类型的数值,小数位数)”;2、使用sprintf()函数,语法“sprintf("%.xf",int类型的值)”,参数x为小数位数。 ...
    551
    2023-03-22
    php int转小数
  • php怎么将变量转为数组类型
    转为数组类型的方法:1、在要转换的数值变量前加上用括号括起来的目标类型“(array)”,语法“(array)转换变量”;2、使用settype()函数,语法“settype(转换变量,"array")”。 ...
    647
    2023-03-22
    php 变量 数组类型
  • php怎么将数组键名(key)转为小写
    在php中,可以利用array_change_key_case()函数来将数组键名(key)转为小写;该函数可以将数组中所有的键(key)都转换为小写字母,只需要省略第二个参数或将第二个参数设置为“CASE_LOWER”即可,语法“array_change_key_case(数组)”或“array_change_key_case(数组,CASE_LOWER)”。本教程操作环境:windows7系统、 ...
    903
    2023-03-22
    php php数组
  • php怎么将布尔类型转为字符串
    php将布尔类型转为字符串的方法:1、使用strval()函数,语法“strval($bool)”;2、使用settype()函数,语法“settype($bool, 'string')”。 ...
    307
    2023-03-22
    php 布尔类型 字符串 类型转换
  • php中怎么将浮点型转为int型
    php中将浮点型转为int型的方法:1、使用intval()函数,语法“intval(浮点型数据)”;2、使用settype()函数,语法“settype(浮点型数据, 'integer')”。 ...
    347
    2023-03-22
    php 数据类型转换 浮点型 float int
  • php中怎么将17进制转为10进制
    在php中,可以使用base_convert()函数来将17进制转为10进制,该函数可以在任意进制之间转换数字,只需要指定原进制和要转换的进制即可;语法“base_convert("要转换的值",17,10)”。 ...
    638
    2023-03-22
    php 进制转换 17进制转10进制
  • php怎么将关联数组转为普通数组
    在PHP中,可以利用array_values()函数将关联数组转为普通数组(索引数组),语法为“array_values($array)”。array_values()函数的作用是返回一个包含给定数组中所有值的数组,但不保留键名;被返回的数组将使用索引数组的形式,数组的索引从0开始且以1递增。本教程操作环境:windows7系统、PHP8.1版、DELL G3电脑在 PHP 数组中,无论什么类型的键 ...
    858
    2023-03-22
    php数组 php
  • php怎么将字符串转为integer类型
    转换方法:1、使用intval()函数,语法“intval($str)”;2、在字符串变量之前加上用括号括起来的目标类型的方式强制转换变量类型“(integer)”,语法“(integer)$str”。 ...
    690
    2023-03-22
    php 字符串 integer类型
  • 使用Java语言将XML转为PDF的方法
    这篇文章主要介绍了使用Java语言将XML转为PDF的方法,本文将介绍通过Java代码来实现该格式转换的方法,需要的朋友可以参考下 ...
    202
    2023-03-22
    Java   XML转 PDF
  • php怎么将字符串分割转为数组
    在php中,可以使用str_split()函数来分割字符串将其转为数组,该函数可以将字符串按照需要的长度分割成若干个子串,并将这些子串组合成一个数组;语法“str_split(string,length)”。 ...
    708
    2023-03-22
    php 字符串分割 字符串转数组
  • php怎么将值强制转为数字类型
    转换方法:1、在变量前加上用括号括起来的目标类型“(int)”,语法“(int)$val”;2、使用intval()函数,语法“intval($val)”;3、使用settype(),语法“settype($val,"integer")”。 ...
    520
    2023-03-22
    php 强制类型转换 数字类型
热门问答
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作