Heim > PHP-Framework > Laravel > Hauptteil

Wie Laravel das Paket laravel-snappy verwendet, um HTML in PDF und PNG zu konvertieren

藏色散人
Freigeben: 2020-10-14 16:15:55
nach vorne
2983 Leute haben es durchsucht

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!

Wie Laravel das Paket laravel-snappy verwendet, um HTML in PDF und PNG zu konvertieren

Vorwort

Da 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 这个包,底层使用的是 wkhtmltopdfwkhtmltopdf 是构建于 QT Webkit 之上,而 QT Webkit 又是基于 Webkit 的,跟我们的浏览器一样的渲染引擎。

安装

1、先查看系统是 32 位的还是 64 位的

uname -a
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

4、安装 laravel-snappy 包

composer require barryvdh/laravel-snappy
Nach dem Login kopieren

配置

1、将 ServiceProvider 添加到 config/app.php 中的 providers 数组中

Barryvdh\Snappy\ServiceProvider::class,
Nach dem Login kopieren

2、将 Facades 添加到 config/app.php 中的 aliases 数组中

'PDF' => Barryvdh\Snappy\Facades\SnappyPdf::class,
'SnappyImage' => Barryvdh\Snappy\Facades\SnappyImage::class,
Nach dem Login kopieren

3、生成配置文件

php artisan vendor:publish --provider="Barryvdh\Snappy\ServiceProvider"
Nach dem Login kopieren

注意:config 文件夹中的 snappy.php 就是其配置文件,binary 指向的就是上面安装的 wkhtml 相关路径.

使用

PDF

//一、下载
$pdf = \PDF::loadView('welcome', $data);
return $pdf->download('welcome.pdf');

//二、渲染页面,在浏览器中显示
$html = &#39;<html><head><meta charset="utf-8"></head><h1>订单id</h1><h2>12346546</h2></html>&#39;;
$pdf = \PDF::loadHTML($html);
return $pdf->inline();
Nach dem Login kopieren

Image

//一、下载
$img = \SnappyImage::loadView(&#39;welcome&#39;, $data);
return $img->download(&#39;welcome.png&#39;);

//二、渲染页面,在浏览器中显示
$html = &#39;<html><head><meta charset="utf-8"></head><h1>订单id</h1><h2>12346546</h2></html>&#39;;
$img = \SnappyImage::loadHTML($html);
return $img->inline();
Nach dem Login kopieren

踩坑记录

一、当执行生成时若提示 libXrenderlibssl 库不存在需要安装相对应库

//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
Nach dem Login kopieren

二、中文显示乱码问题,这个问题需要在 Linux 中安装中文字体即可解决

查看系统字体
在开始安装之前,我们先查看系统中已经安装的字体,要查看系统中已经安装的字体,我们可以使用 fc-list

1. Überprüfen Sie zunächst, ob das System 32-Bit oder 64-Bit ist Verzeichnis

yum install -y fontconfig mkfontscale
Nach dem Login kopieren

app.php

[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
...
Nach dem Login kopieren

3. Generieren Sie die Konfigurationsdatei

[root@8d079be5059a php]# fc-list :lang=zh
Nach dem Login kopieren

Hinweis: snappy.php im Konfigurationsordner ist die Konfigurationsdatei, und die Binärdatei verweist auf den oben installierten wkhtml-bezogenen Pfad.

< /blockquote>


Verwenden Sie


🎜PDF🎜🎜
C:\Windows\Fonts
Nach dem Login kopieren
🎜🎜Image🎜🎜
//远程复制
scp simfang.ttf root@ip:/usr/share/fonts
Nach dem Login kopieren
🎜🎜Tracking-Datensatz🎜🎜🎜 1. Wenn beim Ausführen der Generierung libXrender oder < Der Code>libssl -Bibliothek existiert nicht und die entsprechende Bibliothek muss installiert werden🎜
cd /usr/share/fonts/mkfontscale
mkfontdir
fc-cache
Nach dem Login kopieren
🎜 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 Befehl fc-list verwenden. Wir müssen zuerst das entsprechende Softwarepaket installieren. 🎜Auf Centos verwenden Sie zum Installieren den folgenden Befehl: 🎜
[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,Arrunta
Nach dem Login kopieren
🎜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

Das 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!

Verwandte Etiketten:
Quelle:learnku.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage