목차
一、配置PHP扩展
二、配置office支持
1. 配置组件服务
2. 后台运行软件
三、实现文件转换
백엔드 개발 PHP 문제 PHP에서 작업물을 PDF로 변환하는 방법

PHP에서 작업물을 PDF로 변환하는 방법

Sep 30, 2021 pm 12:11 PM
pdf php

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

PHP에서 작업물을 PDF로 변환하는 방법

本教程操作环境: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, &#39;r&#39;)) {            $page = 0;            while (!feof($fp)) {                $line = fgets($fp, 255);                if (preg_match(&#39;/\/Count [0-9]+/&#39;, $line, $matches)) {                    preg_match(&#39;/[0-9]+/&#39;, $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(&#39;com.sun.star.beans.PropertyValue&#39;);        $struct->Name = $name;        $struct->Value = $value;        return $struct;
    }    private function convertProcess($source, $export)
    {        $desktop_args = array($this->setProperty(&#39;Hidden&#39;, true));        $desktop = $this->com->createInstance(&#39;com.sun.star.frame.Desktop&#39;);        $export_args = array($this->setProperty(&#39;FilterName&#39;, &#39;writer_pdf_Export&#39;));        $program = $desktop->loadComponentFromURL($source, &#39;_blank&#39;, 0, $desktop_args);        $program->storeToURL($export, $export_args);        $program->close(true);
    }
}
로그인 후 복사

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

$arr = array(&#39;doc&#39;, &#39;docx&#39;, &#39;xls&#39;, &#39;xlsx&#39;, &#39;ppt&#39;, &#39;pptx&#39;);

$converter = new PDFConverter();

foreach ($arr as $ext) {
    $source = __DIR__ . &#39;/office/test.&#39; . $ext;
    $export = __DIR__ . &#39;/pdf/test.&#39; . $ext . &#39;.pdf&#39;;
    $converter->execute($source, $export);
    echo &#39;<p>&#39; . $ext . &#39; Done</p>&#39;;
}
로그인 후 복사

推荐学习:《PHP视频教程

위 내용은 PHP에서 작업물을 PDF로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

CakePHP 프로젝트 구성 CakePHP 프로젝트 구성 Sep 10, 2024 pm 05:25 PM

이번 장에서는 CakePHP의 환경 변수, 일반 구성, 데이터베이스 구성, 이메일 구성에 대해 알아봅니다.

Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Dec 24, 2024 pm 04:42 PM

PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP 날짜 및 시간 CakePHP 날짜 및 시간 Sep 10, 2024 pm 05:27 PM

cakephp4에서 날짜와 시간을 다루기 위해 사용 가능한 FrozenTime 클래스를 활용하겠습니다.

CakePHP 파일 업로드 CakePHP 파일 업로드 Sep 10, 2024 pm 05:27 PM

파일 업로드 작업을 위해 양식 도우미를 사용할 것입니다. 다음은 파일 업로드의 예입니다.

CakePHP 라우팅 CakePHP 라우팅 Sep 10, 2024 pm 05:25 PM

이번 장에서는 라우팅과 관련된 다음과 같은 주제를 학습하겠습니다.

CakePHP 토론 CakePHP 토론 Sep 10, 2024 pm 05:28 PM

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 Dec 20, 2024 am 11:31 AM

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

CakePHP 유효성 검사기 만들기 CakePHP 유효성 검사기 만들기 Sep 10, 2024 pm 05:26 PM

컨트롤러에 다음 두 줄을 추가하면 유효성 검사기를 만들 수 있습니다.

See all articles