Step by Step Ruby on Rails

Ruby on Railsで実際にWebサイトを構築する手順をまとめています。

Wicked PDFを使ってPDF生成

Wicked PDFを使ってPDFを生成してみました。日本語表示については調査中ですがとりあえず備忘として残しました。
 
1)インストール
 
$ vi Gemfile
 
gem 'wkhtmltopdf-binary'
gem 'wicked_pdf'
 
$ bundle install
 
Installing wicked_pdf (0.9.10)
 
2)PDF Mimeタイプを登録
 
$ vi config/initializers/mime_types.rb
 
Mime::Type.register "application/pdf", :pdf
 
3)コントローラにPDFの設定
 
$ vi app/controllers/trade_items_controller.rb

  def index
    @trade_items = TradeItem.all
    respond_to do |format|
      format.html
      format.pdf do
        render :pdf => "report", :layout => 'pdf.html.erb'
      end
    end
  end

 
4)レイアウトファイル作成
 
$ vi app/views/layouts/pdf.html.erb

<!DOCTYPE html>
<html>
<head>
  <title>RailsProject</title>
  <%= wicked_pdf_stylesheet_link_tag "pdf" %>
  <%= wicked_pdf_javascript_include_tag "pdf" %>
</head>
<body>

<%= yield %>

</body>
</html>

 
5)ビューを作成
 
$ vi app/views/trade_items/index.pdf.erb

<h1>Rails Wicked PDF</h1>
<table>
  <thead>
    <tr>
      <th>ID</th><th>名前</th>
    </tr>
  </thead>
  <tbody>
  <% @trade_items.each do |trade_item| %>
    <tr>
      <td><%= trade_item.id %></td>
      <td><%= trade_item.trade_item_name %></td>
    </tr>
  <% end %>
  </tbody>
</table>

 
6)動作確認
 
下記URLにアクセスします。
http://localhost:3000/trade_items.pdfをブラウザに入力して動作確認
 
※日本語表示について
 
下記設定を行いましたが、日本語の表示が出来ませんでした。調査中です。
 
①フォントを追加
$ ls vendor/fonts/ipam.ttf
vendor/fonts/ipam.ttf
 
②config/application.rbにアセットの設定
 
$ vi config/application.rb
 
config.assets.paths << Rails.root.join('vendor', 'fonts')
 
③スタイルシートの設定
 
$ vi app/assets/stylesheets/pdf.css.scss

@font-face {
   font-family: 'IPA明朝';
   src: url('<%= asset_path "ipam.ttf" %>') format('truetype');
}