120529 railsとか勉強会v2

27
PDF Render :pdf Rails3系対応WickedPDFで 簡単PDF出力 2012/05/29 【第2回】Railsだったり勉強会 土岐佳輝 @tokyoster 12529日火曜日

Upload: yoshiteru-toki

Post on 14-Jun-2015

3.077 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: 120529 railsとか勉強会v2

PDFRender :pdf

Rails3系対応WickedPDFで簡単PDF出力

2012/05/29 【第2回】Railsだったり勉強会土岐佳輝 @tokyoster

12年5月29日火曜日

Page 2: 120529 railsとか勉強会v2

2012/05/29 【第2回】Railsだったり勉強会Render :pdf Rails3系対応WickedPDFで簡単PDF出力

自己紹介(1)•土岐佳輝(とき よしてる)

• Twitter:@tokyoster <-Tok(i)Yos(hi)ter(u)• ※tokyosterでエゴサーチするとモデルさんのページが出てきますが関係ないです><

• 慶應義塾大学理工学部物理情報工学科(情報工学科じゃない科)

• 同理工学研究科修士

• 同理工学研究科博士課程←now!

• MATLABで医療系の画像処理してます

12年5月29日火曜日

Page 3: 120529 railsとか勉強会v2

2012/05/29 【第2回】Railsだったり勉強会Render :pdf Rails3系対応WickedPDFで簡単PDF出力

自己紹介(2)• 30min. のアルバイトプログラマー(‘09.10~)

• 携帯版,Android版,スマホブラウザ版

• Railsでの受託開発(1件目)

• Androidゲーム開発(1件目)

• 色間違い https://play.google.com/store/apps/details?id=net.tokyoster

• 最近mbed(マイコンボード)買った

12年5月29日火曜日

Page 4: 120529 railsとか勉強会v2

2012/05/29 【第2回】Railsだったり勉強会Render :pdf Rails3系対応WickedPDFで簡単PDF出力

要するに•人生迷ってる興味範囲の広いプログラマー

• LangTurn: 優秀なプログラマを見分ける方法 http://langturn.com/translations/58?locale=ja

• “彼らはそれら技術の全てに精通してないかもしれないが、全てのまともなプロ

グラマは関連のない技術の大きなリストを使いこなしていくだろう”

• っていうのを信じたい

12年5月29日火曜日

Page 5: 120529 railsとか勉強会v2

2012/05/29 【第2回】Railsだったり勉強会Render :pdf Rails3系対応WickedPDFで簡単PDF出力

そもそも

•一週間前に急にDMが Σ

•しかも勉強会というのが初参加

•テーマを決めなくちゃ

•何なら話がかぶらない?役に立ちそう?

12年5月29日火曜日

Page 6: 120529 railsとか勉強会v2

2012/05/29 【第2回】Railsだったり勉強会Render :pdf Rails3系対応WickedPDFで簡単PDF出力

テーマ?

•受託で請求書の発行機能をつけることに

•PDFに出力したほうがいいんじゃない?

•印刷○,ファイル保存○,メール送付○

•請求書をRailsからPDFで出力させよう!

12年5月29日火曜日

Page 7: 120529 railsとか勉強会v2

2012/05/29 【第2回】Railsだったり勉強会Render :pdf Rails3系対応WickedPDFで簡単PDF出力

Rails + ? = PDF• TeX で組版すれば良いんじゃね?

• こないだ論文書く時に使ったし(理系)

• ERBを通せばいけるんじゃねえの\begin{table}[htbp]\begin{tabular}{|r|r|r|r|} \hline月 & 日 & 品名 & 単価 &数量 & 小計 \\\hline<% for order in @orders %><%= h order.mm %> & <%= h order.dd %> & <%= h order.item_name %> & <%= h order.item_price %> & <%= h order.number %> & <%= h order.item_price * order.number %> \\\hline<% end %>\end{tabular}\end{table}

12年5月29日火曜日

Page 8: 120529 railsとか勉強会v2

2012/05/29 【第2回】Railsだったり勉強会Render :pdf Rails3系対応WickedPDFで簡単PDF出力

Rails + TeX? = PDF

•・・・でも普通の人ってTeX使わないよね• そもそもインストールが大変だし

12年5月29日火曜日

Page 9: 120529 railsとか勉強会v2

2012/05/29 【第2回】Railsだったり勉強会Render :pdf Rails3系対応WickedPDFで簡単PDF出力

Rails + ? = PDF•Google先生に聞いてみよう

•「Rails PDF出力」

• prawnto というのがあるらしい

•Rails3になって死んだらしい・・・

• Generate pdf from Rails 3 - what tool to choose? - Stack Overflow http://stackoverflow.com/questions/4117884/generate-pdf-from-rails-3-what-tool-to-choose

12年5月29日火曜日

Page 10: 120529 railsとか勉強会v2

2012/05/29 【第2回】Railsだったり勉強会Render :pdf Rails3系対応WickedPDFで簡単PDF出力

Rails + ? = PDF•結論:今ならWickedPDF が良いらしい

• Githubをみたところ最近も更新されてる様子• mileszs/wicked_pdf · GitHub https://github.com/mileszs/wicked_pdf

• そして日本語の記事がほぼない(新規性○)

• Rails3系でPDFを出力したい人に役に立つb

•・・・かも?(そもそもいるのか?)

12年5月29日火曜日

Page 11: 120529 railsとか勉強会v2

2012/05/29 【第2回】Railsだったり勉強会Render :pdf Rails3系対応WickedPDFで簡単PDF出力

本日のテーマ

まどマギ ジェネレーター - まどかマギカ風画像を自動生成 http://magi.md/

12年5月29日火曜日

Page 12: 120529 railsとか勉強会v2

2012/05/29 【第2回】Railsだったり勉強会Render :pdf Rails3系対応WickedPDFで簡単PDF出力

開発環境

•Mac Lion(10.7.4)

• RVM 1.8.5

• Ruby 1.9.2

• Rails 3.2.3

12年5月29日火曜日

Page 13: 120529 railsとか勉強会v2

2012/05/29 【第2回】Railsだったり勉強会Render :pdf Rails3系対応WickedPDFで簡単PDF出力

何はともあれ骨組み作り

rvm gemset create pdf_billsgem install railsrails new pdf_billsrails g scaffold orders item_name:string item_price:integer item_num:integerrake db:migrate

12年5月29日火曜日

Page 14: 120529 railsとか勉強会v2

2012/05/29 【第2回】Railsだったり勉強会Render :pdf Rails3系対応WickedPDFで簡単PDF出力

WickedPDFのGem追加

•Gemfile

gem 'wicked_pdf' gem 'wkhtmltopdf-binary'

• bundle install

12年5月29日火曜日

Page 15: 120529 railsとか勉強会v2

2012/05/29 【第2回】Railsだったり勉強会Render :pdf Rails3系対応WickedPDFで簡単PDF出力

ControllerからPDF出力

•app/controllers/order_controller.rb  class OrdersController < ApplicationController  def index    @orders = Order.all

    respond_to do |format|      format.html # index.html.erb      format.json { render json: @orders }      format.pdf do        render :pdf => "orders", :layout => false, :template => '/orders/index.html'      end    end  end

12年5月29日火曜日

Page 16: 120529 railsとか勉強会v2

2012/05/29 【第2回】Railsだったり勉強会Render :pdf Rails3系対応WickedPDFで簡単PDF出力

結果(1)•開いてみる(localhost:3000/orders)

rails s

•適当に登録

•12年5月29日火曜日

Page 17: 120529 railsとか勉強会v2

2012/05/29 【第2回】Railsだったり勉強会Render :pdf Rails3系対応WickedPDFで簡単PDF出力

結果(1)• localhost:3000/orders.pdf

•文字化けした...

12年5月29日火曜日

Page 18: 120529 railsとか勉強会v2

2012/05/29 【第2回】Railsだったり勉強会Render :pdf Rails3系対応WickedPDFで簡単PDF出力

わけがわからないよ• 多分UTF-8の問題ということでGoogle先生に聞く

• 「WickedPDF UTF-8」

• https://github.com/mileszs/wicked_pdf/issues/35

• <meta http-equiv="content-type" content="text/html; charset=utf-8" />

•が,必要らしい.

12年5月29日火曜日

Page 19: 120529 railsとか勉強会v2

2012/05/29 【第2回】Railsだったり勉強会Render :pdf Rails3系対応WickedPDFで簡単PDF出力

UTF-8対応に修正•app/controllers/orders_controller.rb

• render :pdf => "orders", :layout => false, :template => '/orders/index_pdf'

• app/views/orders/index_pdf.erb

• layout含め作成,headに追記

• <meta http-equiv="content-type" content="text/html; charset=utf-8" />

12年5月29日火曜日

Page 20: 120529 railsとか勉強会v2

2012/05/29 【第2回】Railsだったり勉強会Render :pdf Rails3系対応WickedPDFで簡単PDF出力

結果(2)• ちゃんと表示された!

•12年5月29日火曜日

Page 21: 120529 railsとか勉強会v2

2012/05/29 【第2回】Railsだったり勉強会Render :pdf Rails3系対応WickedPDFで簡単PDF出力

もっと請求書らしく•総額表示とかつけたり

• app/controllers/order_controller.rb@[email protected]{|o|o.item_num*o.item_price}

• app/views/orders/index_pdf.erb<%= h @total_price %>

• CSSも作成

• app/assets/stylesheets/bill.css

12年5月29日火曜日

Page 22: 120529 railsとか勉強会v2

2012/05/29 【第2回】Railsだったり勉強会Render :pdf Rails3系対応WickedPDFで簡単PDF出力

WickedPDFのHelper• app/views/orders/index_pdf.erb• <%= wicked_pdf_stylesheet_link_tag "bill" %>

•他に画像・JS等も専用ヘルパを使う

•フルパスを指定する必要があるらしい• <%= wicked_pdf_javascript_include_tag "pages" %>

• <%= wicked_pdf_image_tag "mysite" %>

12年5月29日火曜日

Page 23: 120529 railsとか勉強会v2

2012/05/29 【第2回】Railsだったり勉強会Render :pdf Rails3系対応WickedPDFで簡単PDF出力

index_pdf.erb<!DOCTYPE html><html><head>  <title>PDF Bills</title>  <%= wicked_pdf_stylesheet_link_tag "bill" %>  <meta http-equiv="content-type" content="text/html; charset=utf-8" /></head><body>  <h2 class="bill_ttl"><span>請求書</span></h2>

  <div class="leftbox">    <div class="customer_address">      <div class="customer_postal_code">〒 123-4567</div>

      <div class="customer_address_detail">見滝原市見滝原町10-3</div>    </div>    <div class="customer_name"><span>鹿目 まどか 様</span></div>

    <div class="total_price">      <span>請求額</span><span class="total_price_price">¥<%= h @total_price %></span>    </div>  </div>  <div class="rightbox">    <div class="logo">QB商事(&#9685;&#8255;&#8255;&#9685;)</div>

    <div class="representative_name">担当者:キュゥべえ</div>

    <div class="address">見滝原市見滝原町9-8</div>  </div>   <table class="order_detail">    <tr><th width="370">商品名</th><th width="50">数量</th><th width="50">単価</th><th width="80">金額</th></tr>

    <% @orders.each do |order| %>      <tr><td class="td_left"><%= h order.item_name %></td><td><%= h order.item_num %></td><td><%= h order.item_price %></td><td><%= h order.item_num * order.item_price %></td></tr>    <% end %>    <tr><td>*** 小計 ***</td><td></td><td></td><td><%= h @total_price %></td></tr>  </table></body></html>

12年5月29日火曜日

Page 24: 120529 railsとか勉強会v2

2012/05/29 【第2回】Railsだったり勉強会Render :pdf Rails3系対応WickedPDFで簡単PDF出力

結果(3)•かなり請求書らしい感じにできた!

12年5月29日火曜日

Page 25: 120529 railsとか勉強会v2

2012/05/29 【第2回】Railsだったり勉強会Render :pdf Rails3系対応WickedPDFで簡単PDF出力

まとめ•PDFで出力させるのって簡単!

• gem 'wicked_pdf'

• gem 'wkhtmltopdf-binary'

• render :pdf

• <meta http-equiv="content-type" content="text/html; charset=utf-8" />

• (TeXと連携するとか言わなくて良かった)

12年5月29日火曜日

Page 26: 120529 railsとか勉強会v2

2012/05/29 【第2回】Railsだったり勉強会Render :pdf Rails3系対応WickedPDFで簡単PDF出力

参考資料• Generate pdf from Rails 3 - what tool to choose? - Stack Overflow   

http://stackoverflow.com/questions/4117884/generate-pdf-from-rails-3-what-tool-to-choose

• PDF Generation with Wicked pdf in Rails « Abhilash ak's Blog http://akabhilash.wordpress.com/2010/11/27/pdf-generation-with-wicked-pdf-in-rails/

• mileszs/wicked_pdf https://github.com/mileszs/wicked_pdf

• Issue #35: Encoding issues · mileszs/wicked_pdf https://github.com/mileszs/wicked_pdf/issues/35

• まどマギ ジェネレーター - まどかマギカ風画像を自動生成 http://magi.md/

12年5月29日火曜日

Page 27: 120529 railsとか勉強会v2

ご清聴ありがとうございました!

12年5月29日火曜日