wird verwendet, um das Laravel-SnAppy-Paket für alle zu verwenden, um HTML in PDF und PNG zu implementieren. Ich hoffe, es wird Freunden in Not hilfreich sein!
VorwortDa das Unternehmen ein neues Tool namens Cloud-Vertrag entwickeln möchte, kann es mehrere Sätze fester Vertragsvorlagen (HTML-Seiten) voreinstellen und die Parameterfüllung verwenden, um die Daten im Vertrag flexibel zu ändern . Dann generieren wir PDF und PNG. Nach der Überprüfung haben wir festgestellt, dass das Paket laravel-snappy
auf wkhtmltopdf
basiert code>QT Webkit und QT Webkit
basiert auf Webkit
, der gleichen Rendering-Engine wie unser Browser.
Installationlaravel-snappy
这个包,底层使用的是 wkhtmltopdf
,wkhtmltopdf
是构建于 QT Webkit
之上,而 QT Webkit
又是基于 Webkit
的,跟我们的浏览器一样的渲染引擎。
安装
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
4、安装 laravel-snappy 包
composer require barryvdh/laravel-snappy
配置
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 = \PDF::loadView('welcome', $data); return $pdf->download('welcome.pdf'); //二、渲染页面,在浏览器中显示 $html = '<html><head><meta charset="utf-8"></head><h1>订单id</h1><h2>12346546</h2></html>'; $pdf = \PDF::loadHTML($html); return $pdf->inline();
Image
//一、下载 $img = \SnappyImage::loadView('welcome', $data); return $img->download('welcome.png'); //二、渲染页面,在浏览器中显示 $html = '<html><head><meta charset="utf-8"></head><h1>订单id</h1><h2>12346546</h2></html>'; $img = \SnappyImage::loadHTML($html); return $img->inline();
踩坑记录
一、当执行生成时若提示 libXrender
或 libssl
库不存在需要安装相对应库
//apt-get 安装方法 apt-get install libXrender* apt-get install libssl* //yum 安装方法 yum install libXrender* yum install libssl* //若 yum 安装时最后报错 Error: GPG check FAILED yum install libXrender* --nogpgcheck yum install libssl* --nogpgcheck
二、中文显示乱码问题,这个问题需要在 Linux 中安装中文字体即可解决
查看系统字体
在开始安装之前,我们先查看系统中已经安装的字体,要查看系统中已经安装的字体,我们可以使用 fc-list
yum install -y fontconfig mkfontscale
[root@8d079be5059a php]# fc-list /usr/share/fonts/urw-base35/NimbusMonoPS-Italic.otf: Nimbus Mono PS:style=Italic /usr/share/fonts/urw-base35/D050000L.t1: D050000L:style=Regular ...
[root@8d079be5059a php]# fc-list :lang=zh
Hinweis: snappy.php im Konfigurationsordner ist die Konfigurationsdatei, und die Binärdatei verweist auf den oben installierten wkhtml-bezogenen Pfad.< /blockquote>
Verwenden Sie
🎜PDF🎜🎜
🎜🎜Image🎜🎜C:\Windows\FontsNach dem Login kopieren🎜🎜Tracking-Datensatz🎜🎜🎜 1. Wenn beim Ausführen der Generierung//远程复制 scp simfang.ttf root@ip:/usr/share/fontsNach dem Login kopierenlibXrender
oder < Der Code>libssl -Bibliothek existiert nicht und die entsprechende Bibliothek muss installiert werden🎜🎜 2. Das Problem der verstümmelten chinesischen Anzeige Dieses Problem muss durch die Installation chinesischer Schriftarten unter Linux gelöst werden🎜🎜Überprüfen Sie die Systemschriftarten🎜Bevor Sie starten Bei der Installation können wir zunächst die im System installierten Schriftarten anzeigen, indem wir den Befehlcd /usr/share/fonts/mkfontscale mkfontdir fc-cacheNach dem Login kopierenfc-list
verwenden. Wir müssen zuerst das entsprechende Softwarepaket installieren. 🎜Auf Centos verwenden Sie zum Installieren den folgenden Befehl: 🎜🎜Nach Abschluss der Installation können wir die im System installierten Schriftarten anzeigen 🎜rrreee🎜 Wenn wir die im System installierten chinesischen Schriftarten anzeigen möchten, können wir Folgendes verwenden Befehl 🎜rrreee🎜 Auf dem Bild oben können wir sehen, dass es keine chinesischen Schriftarten im System gibt🎜🎜Wir geben das Windows-Schriftartverzeichnis ein🎜rrreee🎜Kopieren Sie die Schriftart simfang.ttf aus der Ferne oder legen Sie sie auf andere Weise im Schriftartenverzeichnis des Servers ab 🎜🎜rrreee🎜Dann erstellen Sie die Indexinformationen für die Schriftart, aktualisieren Sie den Schriftarten-Cache🎜🎜rrreee🎜Zu diesem Zeitpunkt wurde die Schriftart installiert. Lassen Sie uns nun die chinesischen Schriftarten überprüfen und sehen, ob sie erfolgreich installiert wurden🎜rrreee[root@8d079be5059a php]# fc-list :lang=zh /usr/share/fonts/simfang.ttf: FangSong,仿宋:style=Regular,Normal,obyčejné,Standard,Κανονικά,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,ArruntaNach dem Login kopierenDas obige ist der detaillierte Inhalt vonWie Laravel das Paket laravel-snappy verwendet, um HTML in PDF und PNG zu konvertieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!