windows和CentOS7安裝wkhtmltopdf

我愛大可樂發表於2020-10-22

Windows和CentOS7使用wkhtmltopdf

查詢測試、總耗時一天時間。其中有許多問題現在看來都不是事

1.windows上使用wkhtmltopdf

wkhtmltopdf.org/downloads.html 上下載win版的安裝程式,安裝完畢後記錄下這兩個檔案的本地地址

windows和centos 7使用wkhtmltopdf
地址分別為:

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,

在配置檔案中:

windows和centos 7安裝wkhtmltopdf

在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 檢視幫助檔案,內容如下
    windows和centos 7安裝wkhtmltopdf
    檢視擴充套件包檔案中有方法如下:
    windows和centos 7安裝wkhtmltopdf
    所以可以這樣寫

    $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 協議》,轉載必須註明作者和本文連結
我愛大可樂

相關文章