Centos7 安裝 wkhtmltopdf
1、先查看系統是 32 位的還是 64 位的
uname -a
2、通過 composer 安裝 wkhtmltopdf
32位:
$ composer require h4cc / wkhtmltopdf-i386 0.12.x
$ composer require h4cc / wkhtmltoimage-i386 0.12.x
64位:
$ composer require h4cc/wkhtmltopdf-amd64 0.12.x
$ composer require h4cc/wkhtmltoimage-amd64 0.12.x
3、接下來將安裝好的 wkhtmltopdf 復制到 Linux 系統可執行命令的目錄中
cp vendor/h4cc/wkhtmltoimage-amd64/bin/wkhtmltoimage-amd64 /usr/local/bin/
cp vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64 /usr/local/bin/
//并使其可執行:
chmod +x /usr/local/bin/wkhtmltoimage-amd64
chmod +x /usr/local/bin/wkhtmltopdf-amd64
Laravel 安裝 snappy
composer require barryvdh/laravel-snappy
配置(可選,Laravel 5.5+ 自動發現、不用管1、2步驟)
1、將 ServiceProvider 添加到 config/app.php 中的 providers 數組中
Barryvdh\Snappy\ServiceProvider::class,
2、將 Facades 添加到 config/app.php 中的 aliases 數組中
'PDF' => Barryvdh\Snappy\Facades\SnappyPdf::class,
'SnappyImage' => Barryvdh\Snappy\Facades\SnappyImage::class,
3、生成配置文件
php artisan vendor:publish --provider="Barryvdh\Snappy\ServiceProvider"
注意:config 文件夾中的 snappy.php 就是其配置文件,binary 指向的就是上面安裝的 wkhtml 相關路徑.
'pdf' => ['enabled' => true,'binary' => env('WKHTML_PDF_BINARY', '/usr/local/bin/wkhtmltopdf-amd64'),'timeout' => false,'options' => [],'env' => [],],'image' => ['enabled' => true,'binary' => env('WKHTML_IMG_BINARY', '/usr/local/bin/wkhtmltoimage-amd64'),'timeout' => false,'options' => [],'env' => [],],
解決中文字體亂碼問題
參考說明:中文亂碼解決
1、Ubuntu
apt-get install fonts-wqy-microhei ttf-wqy-microhei fonts-wqy-zenhei ttf-wqy-zenhei
2、CentOS 7
yum install wqy-microhei-fonts wqy-zenhei-fonts
具體使用
$html ='
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>水果供應鏈數據表格</title><style>body {font-family: Arial, sans-serif;margin: 0;padding: 20px;background-color: #f5f5f5;}.container {max-width: 1200px;margin: 0 auto;}h1 {color: #333;text-align: center;}.table-container {overflow-x: auto;}table {width: 100%;border-collapse: collapse;}th, td {padding: 12px 15px;text-align: left;border-bottom: 1px solid #ddd;}th {background-color: #f2f2f2;font-weight: bold;}tr:hover {background-color: #f5f5f5;}.status {padding: 4px 8px;border-radius: 4px;font-size: 12px;font-weight: bold;display: inline-block;}.status-green {background-color: #d4edda;color: #155724;}.status-yellow {background-color: #fff3cd;color: #856404;}.status-red {background-color: #f8d7da;color: #721c24;}.action-btn {padding: 5px 10px;margin-right: 5px;border: none;border-radius: 4px;cursor: pointer;}.view-btn {background-color: #17a2b8;color: white;}.edit-btn {background-color: #28a745;color: white;}.delete-btn {background-color: #dc3545;color: white;}</style>
</head>
<body>
<div class="container"><h1>水果供應鏈數據表格</h1><div class="table-container"><table><thead><tr><th>ID</th><th>水果名稱</th><th>供應商</th><th>供應日期</th><th>數量(kg)</th><th>價格(¥/kg)</th><th>新鮮度</th><th>庫存狀態</th></tr></thead><tbody><tr><td>1</td><td>紅富士蘋果</td><td>綠源農場</td><td>2025-05-10</td><td>2,540</td><td>8.50</td><td>96%</td><td><span class="status status-green">充足</span></td></tr><tr><td>2</td><td>進口香蕉</td><td>熱帶水果公司</td><td>2025-05-09</td><td>1,875</td><td>6.20</td><td>92%</td><td><span class="status status-green">充足</span></td></tr><tr><td>3</td><td>臍橙</td><td>陽光果園</td><td>2025-05-08</td><td>3,200</td><td>7.80</td><td>89%</td><td><span class="status status-green">充足</span></td></tr><tr><td>4</td><td>巨峰葡萄</td><td>葡萄園主</td><td>2025-05-07</td><td>1,250</td><td>12.00</td><td>78%</td><td><span class="status status-yellow">中等</span></td></tr><tr><td>5</td><td>奶油草莓</td><td>甜蜜農場</td><td>2025-05-06</td><td>870</td><td>18.50</td><td>65%</td><td><span class="status status-red">低庫存</span></td></tr><tr><td>6</td><td>金煌芒果</td><td>南方果園</td><td>2025-05-05</td><td>2,150</td><td>15.20</td><td>90%</td><td><span class="status status-green">充足</span></td></tr><tr><td>7</td><td>哈密瓜</td><td>西域果園</td><td>2025-05-04</td><td>1,620</td><td>5.80</td><td>94%</td><td><span class="status status-green">充足</span></td></tr><tr><td>8</td><td>菠蘿</td><td>南方水果公司</td><td>2025-05-03</td><td>980</td><td>7.50</td><td>88%</td><td><span class="status status-green">充足</span></td></tr></tbody></table></div>
</div>
</body>
</html>';
$pdf = SnappyPdf::loadHTML($html);$pdf->setOptions(['orientation' => 'landscape', // 橫向(默認是 portrait 縱向)// 可選:若需自定義頁面大小(如 A4 橫向需調換寬高)// 'page-size' => 'A4', // 保持頁面大小,自動適應橫向// 或自定義尺寸(單位:mm/in/cm,例如 A4 橫向為 297mm×210mm)// 'page-size' => '297mm 210mm',]);
return $pdf->inline(); //瀏覽器瀏覽
return $pdf->download('welcome.pdf'); //直接下載
參考文章:https://learnku.com/articles/50557