Windows和CentOS7使用wkhtmltopdf
查詢測試、總耗時一天時間。其中有許多問題現在看來都不是事
1.windows上使用wkhtmltopdf
在wkhtmltopdf.org/downloads.html 上下載win
版的安裝程式,安裝完畢後記錄下這兩個檔案的本地地址
地址分別為:
D:\app\wkhtmltopdf\bin\wkhtmltopdf
D:\app\wkhtmltopdf\bin\wkhtmltoimage
將地址配置在.env檔案中即可。
2.在CentOS 7上安裝wkhtmltopdf
在CentOs上安裝是最花費我時間的。
建議在官網上下載(rpm
格式)然後上傳至伺服器,(期間試過多種方式,這種是一次性成功的)然後執行:
rpm -Uvh wkhtmltox-0.12.6-1.centos8.x86_64.rpm
安裝完成後,查詢一下安裝路徑(一般為/usr/local/bin)
whereis wkhtmltopdf
然後執行命令:
sudo chmod +x /usr/local/bin/wkhtmltopdf
至此,安裝完畢。(相關配置和常見問題在後面)
3.配合barryvdh/laravel-snappy使用
安裝擴充套件barryvdh/laravel-snappy
composer require barryvdh/laravel-snappy
安裝完成後釋出配置檔案
php artisan vendor:publish --provider="Barryvdh\Snappy\ServiceProvider"
(附)可以在app.php檔案中的providers新增
Barryvdh\Snappy\ServiceProvider::class,
在facades新增
'PDF' => Barryvdh\Snappy\Facades\SnappyPdf::class,
'SnappyImage' => Barryvdh\Snappy\Facades\SnappyImage::class,
在配置檔案中:
在pdf->binary對應的地方寫上執行檔案的路徑(記得加雙引號,也可以在.env檔案中配置,此時不需要加引號)
使用方式如下:
$html='...';//html程式碼
return SnappyImage::loadHtml($html)->stream('demo.jpg');
此時瀏覽器上會顯示一張圖片,內容為HTML所展示的內容。(轉pdf也是一樣)
問題一:伺服器上中文亂碼
在c:\windows\fonts中搜尋宋體,不要搜尋simsun不一定能搜出來,將字型檔案上傳至伺服器/user/share/fonts檔案中
問題二:在windows上執行時顯示中文亂碼
在SnappyImage::loadHtml($html)後面加上setOption(‘encoding’, ‘utf-8’);
問題三:部分人使用其他方式安裝wkhtmltopdf時,在測試 wkhtmltopdf www.baidu.com test.pdf 時執行出錯。
更新wkhtmltopdf檔案,或者使用上述方法進行安裝
問題四:圖片寬度不對
執行 wkhtmltoimage -h 檢視幫助檔案,內容如下
檢視擴充套件包檔案中有方法如下:
所以可以這樣寫$html='...';//html程式碼 $options=[ 'crop-w'=>600, 'encoding'=>'utf-8' ]; return SnappyImage::loadHtml($html)->setOptions($options)->stream('demo.jpg');
(ps:crop-w是int型別,不要加單位px之類的,同時width也不需要加,這都是教訓)
如果還有什麼問題可以提出來,大家一起談談。
本作品採用《CC 協議》,轉載必須註明作者和本文連結