3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Rails5]wicked_pdfってなんぞ? 続き

Last updated at Posted at 2019-01-09

はじめに

前回の続きです。

なぜ続いたの?

前回の締めに

多分ここから先は、
日本語入れたり、出力時のレイアウト調整等、
いろいろ更に大変なことがあるとは思うけど、
まずはひと段落として一旦ここで区切ります。

と言ってましたが、

cap1.png

日本語入れたら予想通り化けちゃったから。
(フラグビンビンでした。)

検証環境

前回と同様ですが、
以下の環境で実施しました。

[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

後はコントローラーにエンコーディング指定を追加します。

posts_controller.rb
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

そしたら画面をリロードして、

cap2.png

日本語が表示されましたね。
良かった良かった。

2.気づきと再調整

日本語の表示問題を解決して、
画面のキャプチャを見てふと気づいてしまった。

cap3.png

※画像はChromeブラウザ。

/posts/show.pdfで開いているせいか、
画面上に表示されるPDF名はタブも含めて、formatで指定したオプションは適用されないのね。
ちゃんとダウンロード時には"sample.pdf"となってたから気づかなかった。

公式READMEのオプションを見ていたところ、
"title"オプションの指定で解消出来るようなので早速やってみます。

posts_controller.rb
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

cap4.png

タブのほうも指定通り"sample.pdf"になってくれました。
クエストクリアー!

所感

またハマるかと思ってヒヤヒヤしながら着手しましたが、
特に滞りなく解決出来て良かった。(小並感)

おわりに

何かお気づきの点がありましたら、
ご指摘やアドバイス等頂けると大変助かります!

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?