在 Web 開發中,經常需要將指定網頁生成圖片或 PDF。在 Linux 伺服器上,最常見且穩定的方案是結合 wkhtmltopdf(基於 Qt WebKit 的命令列工具)與 PHP 擴展 php-wkhtmltox。本文將詳細記錄從下載、編譯、安裝到 PHP 整合測試的完整流程,供開發者快速部署參考。
/usr/local/php)官方舊版下載點已遷移,建議從 GitHub Releases 獲取最新穩定版。以 0.12.6 為例:
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.centos7.x86_64.rpm
若為 Debian/Ubuntu 系統,請下載對應的 .deb 包;或使用通用二進制包 wkhtmltox-0.12.6_linux-generic-amd64.tar.xz。
# 解壓 xz -d wkhtmltox-0.12.6_linux-generic-amd64.tar.xz tar xvf wkhtmltox-0.12.6_linux-generic-amd64.tar # 進入目錄查看結構 cd wkhtmltox ls # 輸出:bin include lib share
# 複製共享庫 cp lib/libwkhtmltox.so* /usr/local/lib/ # 複製頭文件 cp -R include/wkhtmltox/ /usr/local/include/ # 更新動態鏈接器快取 ldconfig
# 下載源碼 cd /usr/local/src wget https://github.com/mreiferson/php-wkhtmltox/archive/master.zip unzip master.zip cd php-wkhtmltox-master # 編譯安裝 /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config make && make install
編譯成功後,會提示擴展安裝路徑,例如:/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/。
echo "extension=phpwkhtmltox.so" >> /usr/local/php/etc/php.ini # 重啟 PHP-FPM 生效 service php-fpm restart
建立測試腳本 test_snapshot.php:
<?php
// 簡單測試:將網易首頁截圖保存為 test1.jpg
wkhtmltox_convert('image', array(
'out' => 'test1.jpg',
'in' => 'https://www.163.com/'
));
echo "截圖完成,檔案大小:" . filesize('test1.jpg') . " bytes";
?>
在瀏覽器或命令列執行,若當前目錄生成 test1.jpg 且可正常打開,即表示環境部署成功。
yum install wqy-zenhei-fonts 或 apt-get install fonts-wqy-zenhei。wkhtmltoimage 二進制檔。'ignoreSslErrors' => true 或確保系統 CA 憑證最新。除了截圖,wkhtmltox_convert 同樣支援生成 PDF(將第一參數改為 'pdf'),並可通過選項控制頁面大小、邊距、頁首頁尾等,滿足報表導出、發票生成等場景需求。