はじめに
前回の続きです。
なぜ続いたの?
前回の締めに
多分ここから先は、
日本語入れたり、出力時のレイアウト調整等、
いろいろ更に大変なことがあるとは思うけど、
まずはひと段落として一旦ここで区切ります。
と言ってましたが、
日本語入れたら予想通り化けちゃったから。
(フラグビンビンでした。)
検証環境
前回と同様ですが、
以下の環境で実施しました。
[client]
・MacOS Mojave(10.14.2)
・Vagrant 2.2.2
・VBoxManage 6.0.0
[virtual]
・CentOS 7.6
・Rails 5.2.2
・ruby 2.3.1
ご参考までに。
wicked_pdfの掘り下げ
1.文字化け対応
早速文字化けの解消をしていきます。
対応としてはIPAから日本語フォントを仮想環境に突っ込みます。
$ yum install -y ipa-gothic-fonts
$ yum install -y ipa-mincho-fonts
後はコントローラーにエンコーディング指定を追加します。
def show
# とりあえず愚直に
respond_to do |format|
format.html
format.pdf do
render pdf: "sample", # PDF名
template: "posts/show.html.erb", # viewを対象にする
encoding: "UTF-8" # 日本語に対応させる
end
end
end
そしたら画面をリロードして、
日本語が表示されましたね。
良かった良かった。
2.気づきと再調整
日本語の表示問題を解決して、
画面のキャプチャを見てふと気づいてしまった。
※画像はChromeブラウザ。
/posts/show.pdf
で開いているせいか、
画面上に表示されるPDF名はタブも含めて、formatで指定したオプションは適用されないのね。
ちゃんとダウンロード時には"sample.pdf"となってたから気づかなかった。
公式READMEのオプションを見ていたところ、
"title"オプションの指定で解消出来るようなので早速やってみます。
def show
# とりあえず愚直に
respond_to do |format|
format.html
format.pdf do
render pdf: "sample", # PDF名
template: "posts/show.html.erb", # viewを対象にする
encoding: "UTF-8", # 日本語に対応させる
title: "sample.pdf" # ブラウザ上のファイル名も合わせる
end
end
end
タブのほうも指定通り"sample.pdf"になってくれました。
クエストクリアー!
所感
またハマるかと思ってヒヤヒヤしながら着手しましたが、
特に滞りなく解決出来て良かった。(小並感)
おわりに
何かお気づきの点がありましたら、
ご指摘やアドバイス等頂けると大変助かります!