■wkhtmltopdf(PDF作成)を使う
■wkhtmltopdfのインストール(2023年にAmazonLinux2で試したもの)
wkhtmltopdf を CentOS 7 にインストールする方法 - LAOX PowerTech
https://laox.com/ja/9mcv
wkhtmltopdf
https://wkhtmltopdf.org/downloads.html
Release 0.12.6 - wkhtmltopdf/wkhtmltopdf
https://github.com/wkhtmltopdf/wkhtmltopdf/releases/0.12.6/
バージョン「0.12.6」が最終安定板となっている
「xorg-x11-fonts-75dpi」「xorg-x11-fonts-Type1」は必須のフォントらしい
# yum install -y libXrender libXext
# yum install -y xorg-x11-fonts-75dpi xorg-x11-fonts-Type1
# wget
https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.amazonlinux2....
# rpm -Uvh wkhtmltox-0.12.6-1.amazonlinux2.x86_64.rpm
# /usr/local/bin/wkhtmltopdf -V
wkhtmltopdf 0.12.6 (with patched qt)
追加でフォントをインストール
# yum install -y ipa-gothic-fonts ipa-mincho-fonts ipa-pgothic-fonts ipa-pmincho-fonts
フォントは以下のようになった
# ll /usr/share/fonts
合計 0
drwxr-xr-x 2 root root 314 11月 30 17:02 dejavu
drwxr-xr-x 2 root root 35 11月 30 17:06 ipa-gothic
drwxr-xr-x 2 root root 35 11月 30 17:06 ipa-mincho
drwxr-xr-x 2 root root 36 11月 30 17:06 ipa-pgothic
drwxr-xr-x 2 root root 36 11月 30 17:06 ipa-pmincho
■wkhtmltopdfのインストール(2020年にCentOS7で試したもの)
PHPでPDFを作成するphpwkhtmltopdfはまだまだ戦える - このすみエンジニアブログ
https://www.konosumi.net/entry/2018/06/22/015223
CentOS7 に wkhtmltopdf をインストールする - Qiita
https://qiita.com/ucan-lab/items/5ba8c8fac4407239f19f
wkhtmltopdfをインストール
$ sudo su -
# cd
# yum -y install fontconfig libXrender libXext xorg-x11-fonts-Type1 xorg-x11-fonts-75dpi freetype libpng zlib libjpeg-turbo
# wget
https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos7.x86_6...
# rpm -Uvh wkhtmltox-0.12.5-1.centos7.x86_64.rpm
# wkhtmltoimage --version
wkhtmltoimage 0.12.5 (with patched qt)
# wkhtmltopdf --version
wkhtmltopdf 0.12.5 (with patched qt)
# rm -f wkhtmltox-0.12.5-1.centos7.x86_64.rpm
wkhtmltopdfを動作確認(ただし日本語は表示できない)
# wkhtmltopdf
http://www.yahoo.co.jp yahoo.pdf
日本語フォントをインストール
# fc-list
# wget
https://moji.or.jp/wp-content/ipafont/IPAexfont/IPAexfont00301.zip
# unzip IPAexfont00301.zip
# mv IPAexfont00301 /usr/share/fonts
# rm -f IPAexfont00301.zip
# fc-cache -fv
# fc-list
日本語フォント込でwkhtmltopdfを動作確認
# wkhtmltopdf
http://www.yahoo.co.jp yahoo.pdf
■wkhtmltopdfのインストール(2019年にCentOS7で試したもの)
CentOS7 に wkhtmltopdf をインストールする - Qiita
https://qiita.com/ucan-lab/items/5ba8c8fac4407239f19f
wgetでIPAフォントを落とそうとして失敗(returned a non-zero code: 4)した時の対処 - TonamiLog
http://th.hatenablog.jp/entry/2019/03/13/093956
# cd
# yum -y install libXrender libXext
# wget
https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-a...
# tar Jxfv wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
# cp wkhtmltox/bin/wkhtmltoimage /usr/local/bin/
# cp wkhtmltox/bin/wkhtmltopdf /usr/local/bin/
# wkhtmltoimage --version
wkhtmltoimage 0.12.4 (with patched qt)
# wkhtmltopdf --version
wkhtmltopdf 0.12.4 (with patched qt)
# rm -f wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
# rm -rf wkhtmltox
引き続き日本語フォントの追加
上記解説からURLが変更になっているので注意
# fc-list
# wget
https://oscdl.ipa.go.jp/IPAexfont/IPAexfont00301.zip
# unzip IPAexfont00301.zip
# mv IPAexfont00301 /usr/share/fonts
# rm -f IPAexfont00301.zip
# fc-cache -fv
# fc-list
■wkhtmltopdfのインストール(2016年にCentOS6で試したもの)
PHPでPDFを作成する時はwkhtmltopdf + snappyで戦え
http://qiita.com/morisuke/items/b9c18dcba99ba6501d6e
上記手順で進めると、インストール時に以下のエラーが発生した
# rpm -ivh wkhtmltox-0.12.2.1_linux-centos6-amd64.rpm
error: Failed dependencies:
xorg-x11-fonts-Type1 is needed by wkhtmltox-1:0.12.2.1-1.x86_64
xorg-x11-fonts-75dpi is needed by wkhtmltox-1:0.12.2.1-1.x86_64
「フォントが無い」と言われているので、該当するフォントをインストール
yum install -y xorg-x11-fonts-Type1
yum install -y xorg-x11-fonts-75dpi
日本語フォントを使うために、以下も実行
wget
http://dl.ipafont.ipa.go.jp/IPAexfont/IPAexfont00301.zip
unzip IPAexfont00301.zip
mv IPAexfont00301/ /usr/share/fonts
フォントをインストールできたら、改めてwkhtmltopdfのインストールを実行する
■PHPプログラムから扱う
Snippy(ライブラリを簡単に扱うためのラッパー)をインストールする。Composerは使える前提とする
composer.json を同一階層に作る。記述は以下のようにする
{
"require": {
"knplabs/knp-snappy": "dev-master"
}
}
composer.json のある階層で以下を実行してインストール
$ composer install
もしくは、直接以下でインストール
$ composer require knplabs/knp-snappy
あとは以下の記述で自動的に読み込めば、命令を使うことができる
require 'vendor/autoload.php';
以下、サンプルプログラム
<?php
require 'vendor/autoload.php';
$html = <<<EOF
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>サンプル</title>
<style>
body {
padding: 10px 0;
}
</style>
</head>
<body>
<p>サンプル。</p>
</body>
</html>
EOF;
// wkhtmltopdfの位置をコンストラクタに渡す
$pdf = new Knp\Snappy\Pdf('/usr/local/bin/wkhtmltopdf');
// 文字コードUTF-8
$pdf->setOption('encoding', 'utf-8');
// 用紙サイズ
$pdf->setOption('page-size', 'B5');
// 用紙の向き
$pdf->setOption('orientation', 'landscape');
// PDFをブラウザに出力
header('Content-Type: application/pdf');
echo $pdf->getOutputFromHtml($html);
exit;
■他環境からフォントを複製
A環境のフォントをダウンロードし、B環境にアップロードする…という手順で複製できる
基本的に、/usr/share/fonts に配置するだけで大丈夫そうではある
LINUX(CentOS)のフォントのあれこれ #Linux - Qiita
https://qiita.com/kenta8813/items/fb0c7c348e0d6b17dd87
フォントキャッシュの更新について、以下で触れられている
(44) wkhtmltopdfでホームページをPDF化 - Linuxやってみる!
https://www.dogrow.net/linux/blog44/
以下、実際に default と liberation を複製したときの作業メモ(環境はEC2)
↓
A環境で以下を実行し、default.zip と liberation.zip をダウンロード
$ sudo su -
# cp -rp /usr/share/fonts/default /home/ec2-user
# cp -rp /usr/share/fonts/liberation /home/ec2-user
# cd /home/ec2-user
# zip -r default.zip default
# zip -r liberation.zip liberation
B環境に default.zip と liberation.zip をアップロードし、以下を実行
$ sudo su -
# cd /home/ec2-user
# unzip default.zip
# unzip liberation.zip
# cp -rp default /usr/share/fonts
# cp -rp liberation /usr/share/fonts
B環境のフォントキャッシュをクリア
# fc-cache -fv
B環境のフォントを確認
# fc-list