Avant-propos
Puisque l'entreprise va développer un nouvel outil appelé cloud contract, elle peut prédéfinissez plusieurs Définissez un modèle de contrat fixe (page html), utilisez la méthode de remplissage des paramètres pour modifier de manière flexible les données du contrat, puis générez des PDF et des PNGAprès vérification, nous avons trouvé le package
et la couche inférieure utilise laravel-snappy
. wkhtmltopdf
est construit sur wkhtmltopdf
, et QT Webkit
est basé sur QT Webkit
, le même moteur de rendu que notre navigateur. Webkit
Installation
1. Vérifiez d'abord si le système est 32 bits ou 64 bitsuname -a
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
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
composer require barryvdh/laravel-snappy
Configuration1. Ajoutez ServiceProvider au tableau des fournisseurs dans config/app.php
Barryvdh\Snappy\ServiceProvider::class,
2. >
'PDF' => Barryvdh\Snappy\Facades\SnappyPdf::class, 'SnappyImage' => Barryvdh\Snappy\Facades\SnappyImage::class,
php artisan vendor:publish --provider="Barryvdh\Snappy\ServiceProvider"
Remarque : snappy.php dans le dossier config est son fichier de configuration, et le binaire pointe vers celui installé ci-dessus Chemin associé à wkhtml.
Utilisez
PDF//一、下载
$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();
//一、下载 $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();
1 Lors de l'exécution de la génération, s'il invite la bibliothèque ou
. n'existe pas, il est nécessaire d'installer la bibliothèque correspondante//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
libXrender
2. Le problème du chinois affichant des caractères tronqués Ce problème doit être résolu en installant des polices chinoises sous Linux libssl
Afficher les polices système. Avant de commencer l'installation, nous vérifions d'abord les polices qui ont été installées dans le système. Pour afficher les polices qui ont été installées dans le système, nous pouvons utiliser la commande
pour les afficher s'il n'y en a pas. dans le système, nous devons d’abord installer les progiciels appropriés.Sur centos, utilisez la commande suivante pour installer :
yum install -y fontconfig mkfontscale
fc-list
Une fois l'installation terminée, nous pouvons visualiser les polices déjà installées dans le système [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
C:\Windows\Fonts
//远程复制 scp simfang.ttf root@ip:/usr/share/fonts
Créez ensuite les informations d'index des polices et mettez à jour le cache des polices.
cd /usr/share/fonts/mkfontscale mkfontdir fc-cache
À ce stade, la police a été installée. Vérifions maintenant les polices chinoises et voyons si elles sont installées avec succès
[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
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!