튜토리얼 칼럼은 모든 사람이 HTML을 PDF 및 PNG로 구현하기 위해 Laravel-SnAppy 패키지를 사용하는 데 사용됩니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!
머리말회사에서는 클라우드 계약이라는 새로운 도구를 개발하려고 하기 때문에 여러 세트의 고정 계약 템플릿(html 페이지)을 미리 설정하고 매개변수 채우기를 사용하여 계약의 데이터를 유연하게 변경할 수 있습니다. 그런 다음 PDF 및 PNG를 생성합니다. 조사한 결과 laravel-snappy
패키지가 wkhtmltopdf
를 사용하는 것으로 나타났습니다. QT Webkit
및 QT Webkit
은 브라우저와 동일한 렌더링 엔진인 Webkit
을 기반으로 합니다.
설치laravel-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 mkfontscale2. 그런 다음, 설치된 wkhtmltopdf를 Linux 시스템 실행 명령에 복사하세요.
[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 ...4. laravel-snappy 패키지를 설치합니다.
[root@8d079be5059a php]# fc-list :lang=zh
Configuration
1. config/app.php의 공급자 배열에 ServiceProvider를 추가합니다.
C:\Windows\Fonts2. app.php
//远程复制 scp simfang.ttf root@ip:/usr/share/fonts3 구성 파일을 생성합니다🎜
cd /usr/share/fonts/mkfontscale mkfontdir fc-cache
🎜참고: config 폴더의 snappy.php는 구성 파일이며 바이너리는 위에 설치된 wkhtml 관련 경로를 가리킵니다.🎜🎜🎜 🎜🎜 🎜🎜🎜🎜🎜🎜PDF🎜🎜[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🎜🎜Image🎜🎜rrreee🎜🎜Tracking Record🎜🎜🎜를 사용하세요. 1. 프롬프트가libXrender
또는libssl인 경우 라이브러리가 존재하지 않으며 해당 라이브러리를 설치해야 합니다🎜rrreee🎜 2. 중국어 디스플레이가 깨져 보이는 문제 이 문제는 Linux에 중국어 글꼴을 설치하여 해결해야 합니다🎜🎜시스템 글꼴을 확인하세요🎜설치를 시작하기 전에 먼저 시스템에 설치된 글꼴을 보려면 fc-list
명령을 사용하여 볼 수 있습니다. 시스템에 해당 명령이 없으면 설치해야 합니다. 먼저 관련 소프트웨어 패키지. 🎜centos에서는 다음 명령을 사용하여 설치합니다. 🎜rrreee🎜설치가 완료된 후 시스템에 설치된 글꼴을 볼 수 있습니다. 🎜rrreee🎜 시스템에 설치된 중국어 글꼴을 보려면 , 다음 명령을 사용할 수 있습니다 🎜rrreee🎜 위 그림에서 시스템에 중국어 글꼴이 없는 것을 확인할 수 있습니다🎜🎜Windows 글꼴 디렉터리에 들어갑니다🎜rrreee🎜simfang.ttf 글꼴을 원격으로 복사하거나 다른 방법으로 서버의 글꼴 디렉토리🎜🎜rrreee🎜그런 다음 글꼴 인덱스 정보를 생성하고 글꼴 캐시를 업데이트합니다🎜🎜rrreee🎜이 시점에서 글꼴이 설치되었습니다. 이제 중국어 글꼴을 확인하고 성공적으로 설치되었는지 확인해 보겠습니다🎜rrreee
위 내용은 Laravel이 laravel-snappy 패키지를 사용하여 HTML을 PDF 및 PNG로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!