laravel 中使用的pdf 擴展包 laravel-snappy(已解決中文亂碼)

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/79839.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/79839.shtml
英文地址,請注明出處:http://en.pswp.cn/web/79839.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Rust:重新定義系統編程的安全與效率邊界

在軟件工程領域&#xff0c;內存安全漏洞每年造成數千億美元損失&#xff0c;而C/C生態中60%的漏洞源于指針誤用。正是在這樣的背景下&#xff0c;Rust憑借其革命性的內存安全機制異軍突起。作為一門現代系統級編程語言&#xff0c;Rust不僅解決了困擾開發者數十年的內存管理難…

C++學習細節回顧(匯總二)

一.初始化列表相關 1.初始化順序受申明順序影響 2.在必要時可以部分不采用初始化列表&#xff0c;避免受特性1影響 二.非類型模板參數 template< class T , size_t N 10 > 三.特化–特殊化處理 template< class T > bool less(T left , T right) { return left&…

勾選某一行的勾選框,更改當前行的顏色,ALV數據發生變化的事件

文章目錄 屏幕ALV的創建定義變量注冊事件方法定義方法實現frm_data_change 效果 屏幕 ALV的創建 DATA: g_gui_custom_container TYPE REF TO cl_gui_custom_container. DATA: g_gui_alv_grid TYPE REF TO cl_gui_alv_grid.DATA: gt_listheader TYPE slis_t_listheader, &quo…

AI-02a5a6.神經網絡-與學習相關的技巧-批量歸一化

批量歸一化 Batch Normalization 設置合適的權重初始值&#xff0c;則各層的激活值分布會有適當的廣度&#xff0c;從而可以順利的進行學習。那么&#xff0c;更進一步&#xff0c;強制性的調整激活值的分布&#xff0c;是的各層擁有適當的廣度呢&#xff1f;批量歸一化&#…

解決SQL Server SQL語句性能問題(9)——合理使用表分區

9.2. 合理使用表分區 本專欄4.1.4節中,我們對表分區相關的概念和機制等基礎理論進行了較為詳細的介紹和論述,讀者可以參考該節中內容,或者,讀者也可以參考官方或其他相關資料。與其他關系庫類似,SQL Server 2005版本中引進的真正意義上的表分區技術,絕對是解決海量數據環…

C語言學習之文件操作

經過前面的學習&#xff0c;我們已經基本掌握了如何去寫一個C語言的代碼了。但是在實際的項目中&#xff0c;我們不可能不需要文件去操作。因為如果沒有文件&#xff0c;我們寫的程序是存儲在電腦的內存中的。如果程序推出&#xff0c;內存回收數據就隨之丟失了。如果我們要對數…

2025年PMP 學習十三 第9章 項目資源管理(9.1,9.2)

2025年PMP 學習十三 第9章 項目資源管理&#xff08;9.1,9.2&#xff09; 序號過程過程組9.1規劃資源管理規劃9.2估算活動資源規劃9.3獲取資源執行9.4建設團隊執行9.5管理團隊執行9.6控制資源監控 文章目錄 2025年PMP 學習十三 第9章 項目資源管理&#xff08;9.1,9.2&#xf…

藍橋杯13屆國B 完全日期

題目描述。 如果一個日期中年月日的各位數字之和是完全平方數&#xff0c;則稱為一個完全日期。 例如&#xff1a;2021 年 6 月 5 日的各位數字之和為 20216516&#xff0c;而 16 是一個完全平方數&#xff0c;它是 4 的平方。所以 2021 年 6 月 5 日是一個完全日期。 例如&…

某某霸翻譯逆向分析[JS逆向]

聲明 本文章中所有內容僅供學習交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代碼&#xff0c;抓包內容、敏感網址、數據接口等均已做脫敏處理&#xff0c;嚴禁用于商業用途和非法用途&#xff0c;否則由此產生的一切后果均與作者無關&#xff01; 本文章未經…

開源Heygem本地跑AI數字人視頻教程

圖文教程&#xff1a; 點擊跳轉 視頻教程 資料包下載 點擊下載&#xff1a;

C++之fmt庫介紹和使用(1)

C之fmt庫介紹與使用(1) Author: Once Day Date: 2025年5月12日 一位熱衷于Linux學習和開發的菜鳥&#xff0c;試圖譜寫一場冒險之旅&#xff0c;也許終點只是一場白日夢… 漫漫長路&#xff0c;有人對你微笑過嘛… 全系列文章可參考專欄: 源碼分析_Once-Day的博客-CSDN博客 …

設計模式(9)——創建型模式之工廠方法

設計模式(9)——創建型模式之工廠方法 工廠方法作用結構偽代碼適用場景工廠方法 作用 工廠方法是一種創建型設計模式,其在父類中提供一個創建對象的方法,允許子類決定實例化對象的類型。 結構 產品(Product)將會對接口進行聲明。對于所有由創建者及其子類構建的對象,…

Docker 疑難雜癥解決指南:從入門到進階的全面剖析

Docker 作為容器化技術的代表&#xff0c;憑借其輕量級、可移植性和高效資源利用率&#xff0c;已成為開發、測試和部署應用的標準工具。然而&#xff0c;在實際使用中&#xff0c;用戶常常會遇到鏡像構建失敗、容器啟動異常、網絡配置問題等疑難雜癥。本文將從鏡像構建、容器生…

搶跑「中央計算+區域控制」市場,芯馳科技高端智控MCU“芯”升級

伴隨著整車EE架構的加速變革&#xff0c;中國高端車規MCU正在迎來“新格局”。 在4月23日開幕的上海國際車展期間&#xff0c;芯馳科技面向新一代AI座艙推出了X10系列芯片&#xff0c;以及面向區域控制器、電驅和動力域控、高階輔助駕駛和艙駕融合系統等的高端智控MCU產品E3系…

DeepPrep:深度學習提升神經影像預處理

DeepPrep&#xff1a;深度學習提升神經影像預處理 一、DeepPrep介紹和BIDS格式介紹 神經影像預處理的痛點&#xff1a;傳統工具&#xff08;如fMRIPrep&#xff09;在大規模數據處理時效率低下&#xff0c;臨床樣本魯棒性不足。DeepPrep通過深度學習工作流管理實現突破&#…

pytorch 數據預處理和常用工具

文章目錄 NumPyNumpy數據結構安裝和使用NumPy Matplotlib的安裝和導入安裝和導入Matplotlib繪制基礎圖畫折線圖散點圖柱狀圖圖例 數據清洗據清洗的作用Pandas進行數據清洗Pandas數據結構Series 數據結構DataFrame數據結構 Pandas數據清洗常用代碼 特征工程主成分分析線性判別分…

MATLAB 中常用的微分函數介紹

MATLAB 中常用的微分函數介紹 在 MATLAB 中&#xff0c;微分運算是數值計算和符號計算中常用的功能。無論是在進行數據分析、優化算法&#xff0c;還是數學建模時&#xff0c;微分都扮演著重要的角色。本文將介紹 MATLAB 中常用的微分函數&#xff0c;并通過簡單的示例幫助大家…

按指定位置或關鍵字批量刪除工作表-Excel易用寶

在一個工作簿中有多個工作表&#xff0c;有些工作表不需要了&#xff0c;如果一個一個手動刪除&#xff0c;那實在是太慢了&#xff0c;有沒有什么好的方法可以批量刪除工作表。 批量刪除工作表很簡單&#xff0c;單擊【易用寶】→【工作表】→【批量刪除工作表】。 在打開的批…

TypeScript裝飾器:從入門到精通

TypeScript裝飾器&#xff1a;從入門到精通 什么是裝飾器&#xff1f; 裝飾器&#xff08;Decorator&#xff09;是TypeScript中一個非常酷的特性&#xff0c;它允許我們在不修改原有代碼的情況下&#xff0c;給類、方法、屬性等添加額外的功能。想象一下裝飾器就像給你的代碼…

【SSL證書系列】客戶端如何檢查中間CA簽名是否由根CA簽發

客戶端通過以下步驟檢查中間CA的簽名是否由受信任的根CA簽發&#xff1a; 1. 證書鏈的構建 服務器發送的證書鏈通常包含&#xff1a; ? 服務器證書&#xff08;由中間CA簽發&#xff09; ? 中間CA證書&#xff08;由根CA簽發&#xff09; ? 根CA證書&#xff08;通常不發送…