issue
macOSで動作させていたRailsアプリのPDF出力機能がDocker環境で動作しなくなった。
Error: PDF could not be generated!
使用したgem
gem 'wicket_pdf'
gem 'wkhtmltopdf_binary'
solutions
Dockerfileに下記を追記
RUN apk add --no-cache \
wkhtmltopdf \
ttf-ubuntu-font-family
/usr/bin/wkhtmltopdf --version
-> wkhtmltopdf 0.12.5
wicket_pdf.rbからalpinelinux上のwkhtmltopdfを見るようにパスを指定する
wicket_pdf.rb
require "wicked_pdf"
WickedPdf.config = {
exe_path: '/usr/bin/wkhtmltopdf'
}
日本語が化けた場合
AlpineLinuxにfont-ipa(日本語)をインストールする
terminal
$ cd \
&& wget https://ipafont.ipa.go.jp/IPAfont/ipag00303.zip \
&& mkdir .fonts \
&& unzip ipag00303.zip -d .fonts -j \
&& fc-cache -fv ~/.fonts
本番環境ではポチポチインストールできないのでDockerfileに追記
Dockerfile
RUN cd \
&& wget https://ipafont.ipa.go.jp/IPAfont/ipag00303.zip \
&& mkdir .fonts \
&& unzip ipag00303.zip -d .fonts -j \
&& fc-cache -fv ~/.fonts
wgetコマンド
fc-cacheコマンド
unzipコマンド
appendix
pdf.html.erb
# 最低限なのでcss等適応したい場合は適宜変更する
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<%= yield %>
</body>
</html>
controlloer
respond_to do |format|
format.html
format.pdf do
render pdf: "article_#{params[:id]}",
layout: 'pdf.html',
templete: 'articles/show',
encoding: 'UTF-8',
page_size: 'A4',
margin: {
top: 10,
bottom: 10,
left: 20,
right: 20
}
end
end
reference
gem wicked_pdf
Does it work with Alpine?
Issue with wkhtmltopdf that generates PDF files for this plugin on default Sylius Docker
wicked_pdf Error: PDF could not be generated
RailsアプリでのPDFファイル生成
IPAフォントのダウンロード