最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用PHP將Word文件轉(zhuǎn)換為PDF文件的三種方式

 更新時間:2026年04月10日 09:04:29   作者:熊貓筆記  
本文介紹了三種將Word文件轉(zhuǎn)換為PDF文件的方法:PHPWord+Dompdf、LibreOffice命令和SphinxSearch擴展,詳細(xì)介紹了每種方法的適用場景和安裝配置步驟,最后還解決了轉(zhuǎn)換過程中可能出現(xiàn)的中文亂碼問題,需要的朋友可以參考下

最近工作中遇到了需要把word文件轉(zhuǎn)換為pdf文件功能,嘗試了幾種方式,在此記錄一下,供大家參考。

環(huán)境準(zhǔn)備:

服務(wù)器:CentOS 7.8

PHP:7.2

一、 使用 PHPWord + Dompdf(純 PHP,無需系統(tǒng)軟件,推薦輕量場景)

或使用mpdf或者tcpdf都可以,原理就是獲取word文件的內(nèi)容,并轉(zhuǎn)換為html,并將html轉(zhuǎn)換成pdf。適合簡單 Word 文檔(.docx),無復(fù)雜格式、圖片、表格。對于復(fù)雜word文件,不推薦此種方式。

1. 安裝依賴

composer require phpoffice/phpword
composer require dompdf/dompdf

2. 轉(zhuǎn)換代碼

<?php
require 'vendor/autoload.php';
use PhpOffice\PhpWord\IOFactory;
use Dompdf\Dompdf;
// 輸入 Word 路徑
$wordPath = 'test.docx';
// 輸出 PDF 路徑
$pdfPath = 'output.pdf';
try {
    // 1. 讀取 Word
    $phpWord = IOFactory::load($wordPath);
    // 2. 先渲染為 HTML
    $htmlWriter = IOFactory::createWriter($phpWord, 'HTML');
    $html = $htmlWriter->getContent();
    // 3. 使用 Dompdf 轉(zhuǎn) PDF
    $dompdf = new Dompdf();
    $dompdf->loadHtml($html);
    $dompdf->setPaper('A4', 'portrait');
    $dompdf->render();
    // 4. 保存 PDF
    file_put_contents($pdfPath, $dompdf->output());
    echo "轉(zhuǎn)換成功!PDF 已保存到:$pdfPath";
} catch (Exception $e) {
    echo "轉(zhuǎn)換失?。? . $e->getMessage();
}

二、調(diào)用 LibreOffice 命令(最穩(wěn)定,支持復(fù)雜 Word,生產(chǎn)環(huán)境首選)

適合復(fù)雜 Word(帶圖片、表格、樣式、公式、.doc/.docx),格式還原度最高。Windows/Linux 服務(wù)器都能用。

1. 安裝 LibreOffice:

1.1 使用EPEL庫安裝

sudo yum install epel-release

安裝 LibreOffice

sudo yum install libreoffice

1.2 使用 RPM Fusion 倉庫

導(dǎo)入 RPM Fusion 的 GPG 密鑰并安裝倉庫配置:

sudo rpm --import https://rpmfusion.org/keys?action=AttachFile&do=get&target=RPM-GPG-KEY-rpmfusion-free-centos-8
sudo yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %centos).noarch.rpm

安裝LibreOffice

sudo yum install libreoffice-core

1.3 使用官方 LibreOffice 倉庫

下載并安裝 LibreOffice 的 YUM 倉庫配置文件:

sudo rpm -Uvh https://download.documentfoundation.org/libreoffice/stable/6.4.7/rpm/x86_64/libreoffice6.4.7-lp180103.x86_64.rpm

安裝LibreOffice

sudo yum install libreoffice-core

1.4 使用 Snap 包管理器(如果你)

使用的是 CentOS 8 或更高版本,CentOS 版本支持 Snap

啟用 EPEL 和 PowerTools 倉庫

sudo yum install epel-release
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo yum install centos-release-powertools

安裝 Snapd‌:???????

sudo yum install snapd
sudo systemctl enable --now snapd.socket

安裝LibreOffice

sudo snap install libreoffice --classic

2. 轉(zhuǎn)換代碼

確保 PHP 能執(zhí)行 exec/shell_exec 函數(shù)???????

<?php
// Word 路徑
$wordFile = __DIR__ . '/test.docx';
// 輸出目錄
$outputDir = __DIR__;
// Windows 下 LibreOffice 安裝路徑(改成你自己的)
$libreOffice = 'C:\Program Files\LibreOffice\program\soffice.exe';
// Linux 路徑
// $libreOffice = '/usr/bin/libreoffice';
// 轉(zhuǎn)換命令
$command = sprintf(
    '"%s" --headless --convert-to pdf --outdir "%s" "%s"',
    $libreOffice,
    $outputDir,
    $wordFile
);
// 執(zhí)行轉(zhuǎn)換
exec($command, $output, $status);
if ($status === 0) {
    echo "轉(zhuǎn)換成功!PDF 保存在:$outputDir";
} else {
    echo "轉(zhuǎn)換失敗";
    print_r($output);
}

格式還原度 99%,支持 .doc/.docx/wps 文檔

三、使用 SphinxSearch 擴展(UNIX 系統(tǒng)專用,性能強)

適合Linux 服務(wù)器,大量文檔批量轉(zhuǎn)換。需要安裝 unoconv + LibreOffice。

1. 安裝unoconv

在 CentOS 上安裝unoconv和它的依賴項,通常需要使用一些額外的軟件包,因為 CentOS 默認(rèn)的倉庫中不包含 unoconv,可以通過以下步驟安裝:

1.1 安裝 EPEL 倉庫

參考 方法二 安裝 LibreOffice

1.2 安裝unoconv

一旦安裝了 EPEL 倉庫和 LibreOffice,你就可以通過 pip 安裝 unoconv 了。首先,確保你的系統(tǒng)已經(jīng)安裝了 Python 和 pip。你可以通過以下命令安裝 pip(如果尚未安裝):

sudo yum install python3-pip

然后使用pip安裝unoconv:

pip3 install unoconv

1.3 確認(rèn)安裝

unoconv --version

如果這個命令返回了版本信息,那么 unoconv 就已經(jīng)成功安裝了。

2. 轉(zhuǎn)換代碼

安裝成功后,就可以開始轉(zhuǎn)換文件了,轉(zhuǎn)換命令:

unoconv -f pdf -o 轉(zhuǎn)換后的pdf文件地址 word文件地址
    <?php
    $word = 'test.docx';
    $pdf = 'output.pdf';
    exec("unoconv -f pdf $pdf $word");
    if (file_exists($pdf)) {
        echo "轉(zhuǎn)換成功";
    }

    3. 中文亂碼解決

    CentOS系統(tǒng)默認(rèn)是不安裝中文字體的,如果系統(tǒng)中沒有中文字體,word轉(zhuǎn)換成pdf文件后,中文會顯示為亂碼,需要安裝中文字體來解決。

    ‌3.1 下載中文字體‌

    從互聯(lián)網(wǎng)上下載你需要的中文字體文件(通常是 .ttf 或 .otf 文件)。

    這里已經(jīng)為大家準(zhǔn)備好了一些字體,里面有我自己用的,也有網(wǎng)上分享的:https://pan.quark.cn/s/051c9ef67a4f

    大家也可以自己到網(wǎng)上搜索一些免費字體使用。

    3‌.2 將字體文件復(fù)制到字體目錄‌

    將下載的字體文件復(fù)制到系統(tǒng)的字體目錄中,通常是 /usr/share/fonts/ 或 /usr/share/fonts/chinese/。如下圖所示:

    3?.2 將字體文件復(fù)制到字體目錄?

    ‌3.3 更新字體緩存‌

    更新字體緩存,使系統(tǒng)能夠識別新安裝的字體:

    sudo fc-cache -fv

    字體庫安裝之后,再次轉(zhuǎn)換,中文就會顯示正常。

    本人使用的是unoconv進(jìn)行轉(zhuǎn)換,大家還有哪些好方法,歡迎留言討論。

    以上就是使用PHP將Word文件轉(zhuǎn)換為PDF文件的三種方式的詳細(xì)內(nèi)容,更多關(guān)于PHP將Word文件轉(zhuǎn)為PDF的資料請關(guān)注腳本之家其它相關(guān)文章!

    相關(guān)文章

    最新評論

    沛县| 建瓯市| 呼图壁县| 合作市| 高邑县| 武夷山市| 虞城县| 云南省| 邮箱| 嘉峪关市| 固安县| 巴里| 茌平县| 池州市| 阿荣旗| 房产| 广元市| 博乐市| 通城县| 阜新市| 砚山县| 海阳市| 吴堡县| 青田县| 通渭县| 泰兴市| 渝北区| 贡山| 湖州市| 常宁市| 萨迦县| 台南市| 临沭县| 嘉黎县| 泗水县| 广汉市| 常宁市| 胶南市| 洛宁县| 东港市| 南郑县|