Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

120529 railsとか勉強会v2

3,673 views

Published on

Published in: Technology
  • Be the first to comment

120529 railsとか勉強会v2

  1. 1. Render :pdf Rails3系対応WickedPDFで 簡単PDF出力 PDF 2012/05/29 【第2回】Railsだったり勉強会 土岐佳輝 @tokyoster12年5月29日火曜日
  2. 2. 自己紹介(1) • 土岐佳輝(とき よしてる) • Twitter:@tokyoster <-Tok(i)Yos(hi)ter(u) • ※tokyosterでエゴサーチするとモデルさんのページが出てきますが関係ないです>< • 慶應義塾大学理工学部物理情報工学科(情報工学科じゃない科) • 同理工学研究科修士 • 同理工学研究科博士課程←now! • MATLABで医療系の画像処理してます Render :pdf Rails3系対応WickedPDFで簡単PDF出力 2012/05/29 【第2回】Railsだったり勉強会12年5月29日火曜日
  3. 3. 自己紹介(2) • 30min. のアルバイトプログラマー( 09.10∼) • 携帯版,Android版,スマホブラウザ版 • Railsでの受託開発(1件目) • Androidゲーム開発(1件目) • 色間違い https://play.google.com/store/apps/details?id=net.tokyoster • 最近mbed(マイコンボード)買った Render :pdf Rails3系対応WickedPDFで簡単PDF出力 2012/05/29 【第2回】Railsだったり勉強会12年5月29日火曜日
  4. 4. 要するに • 人生迷ってる興味範囲の広いプログラマー • LangTurn: 優秀なプログラマを見分ける方法 http://langturn.com/translations/58?locale=ja • 彼らはそれら技術の全てに精通してないかもしれないが、全てのまともなプロ グラマは関連のない技術の大きなリストを使いこなしていくだろう • っていうのを信じたい Render :pdf Rails3系対応WickedPDFで簡単PDF出力 2012/05/29 【第2回】Railsだったり勉強会12年5月29日火曜日
  5. 5. そもそも • 一週間前に急にDMが Σ • しかも勉強会というのが初参加 • テーマを決めなくちゃ • 何なら話がかぶらない?役に立ちそう? Render :pdf Rails3系対応WickedPDFで簡単PDF出力 2012/05/29 【第2回】Railsだったり勉強会12年5月29日火曜日
  6. 6. テーマ? • 受託で請求書の発行機能をつけることに • PDFに出力したほうがいいんじゃない? • 印刷○,ファイル保存○,メール送付○ • 請求書をRailsからPDFで出力させよう! Render :pdf Rails3系対応WickedPDFで簡単PDF出力 2012/05/29 【第2回】Railsだったり勉強会12年5月29日火曜日
  7. 7. 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} Render :pdf Rails3系対応WickedPDFで簡単PDF出力 2012/05/29 【第2回】Railsだったり勉強会12年5月29日火曜日
  8. 8. Rails + TeX? = PDF • ・・・でも普通の人ってTeX使わないよね • そもそもインストールが大変だし Render :pdf Rails3系対応WickedPDFで簡単PDF出力 2012/05/29 【第2回】Railsだったり勉強会12年5月29日火曜日
  9. 9. 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 Render :pdf Rails3系対応WickedPDFで簡単PDF出力 2012/05/29 【第2回】Railsだったり勉強会12年5月29日火曜日
  10. 10. Rails + ? = PDF • 結論:今ならWickedPDF が良いらしい • Githubをみたところ最近も更新されてる様子 • mileszs/wicked_pdf · GitHub https://github.com/mileszs/wicked_pdf • そして日本語の記事がほぼない(新規性○) • Rails3系でPDFを出力したい人に役に立つb • ・・・かも?(そもそもいるのか?) Render :pdf Rails3系対応WickedPDFで簡単PDF出力 2012/05/29 【第2回】Railsだったり勉強会12年5月29日火曜日
  11. 11. 本日のテーマ まどマギ ジェネレーター - まどかマギカ風画像を自動生成 http://magi.md/ Render :pdf Rails3系対応WickedPDFで簡単PDF出力 2012/05/29 【第2回】Railsだったり勉強会12年5月29日火曜日
  12. 12. 開発環境 • Mac Lion(10.7.4) • RVM 1.8.5 • Ruby 1.9.2 • Rails 3.2.3 Render :pdf Rails3系対応WickedPDFで簡単PDF出力 2012/05/29 【第2回】Railsだったり勉強会12年5月29日火曜日
  13. 13. 何はともあれ骨組み作り rvm gemset create pdf_bills gem install rails rails new pdf_bills rails g scaffold orders item_name:string item_price:integer item_num:integer rake db:migrate Render :pdf Rails3系対応WickedPDFで簡単PDF出力 2012/05/29 【第2回】Railsだったり勉強会12年5月29日火曜日
  14. 14. WickedPDFのGem追加 • Gemfile gem wicked_pdf gem wkhtmltopdf-binary • bundle install Render :pdf Rails3系対応WickedPDFで簡単PDF出力 2012/05/29 【第2回】Railsだったり勉強会12年5月29日火曜日
  15. 15. 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 Render :pdf Rails3系対応WickedPDFで簡単PDF出力 2012/05/29 【第2回】Railsだったり勉強会12年5月29日火曜日
  16. 16. 結果(1) • 開いてみる(localhost:3000/orders) rails s • 適当に登録 • Render :pdf Rails3系対応WickedPDFで簡単PDF出力 2012/05/29 【第2回】Railsだったり勉強会12年5月29日火曜日
  17. 17. 結果(1) • localhost:3000/orders.pdf • 文字化けした... Render :pdf Rails3系対応WickedPDFで簡単PDF出力 2012/05/29 【第2回】Railsだったり勉強会12年5月29日火曜日
  18. 18. わけがわからないよ • 多分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" /> • が,必要らしい. Render :pdf Rails3系対応WickedPDFで簡単PDF出力 2012/05/29 【第2回】Railsだったり勉強会12年5月29日火曜日
  19. 19. 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" /> Render :pdf Rails3系対応WickedPDFで簡単PDF出力 2012/05/29 【第2回】Railsだったり勉強会12年5月29日火曜日
  20. 20. 結果(2) • ちゃんと表示された! • Render :pdf Rails3系対応WickedPDFで簡単PDF出力 2012/05/29 【第2回】Railsだったり勉強会12年5月29日火曜日
  21. 21. もっと請求書らしく • 総額表示とかつけたり • app/controllers/order_controller.rb @total_price=@orders.sum{|o|o.item_num*o.item_price} • app/views/orders/index_pdf.erb <%= h @total_price %> • CSSも作成 • app/assets/stylesheets/bill.css Render :pdf Rails3系対応WickedPDFで簡単PDF出力 2012/05/29 【第2回】Railsだったり勉強会12年5月29日火曜日
  22. 22. 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" %> Render :pdf Rails3系対応WickedPDFで簡単PDF出力 2012/05/29 【第2回】Railsだったり勉強会12年5月29日火曜日
  23. 23. 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商事(◕‿‿◕)</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> Render :pdf Rails3系対応WickedPDFで簡単PDF出力 2012/05/29 【第2回】Railsだったり勉強会12年5月29日火曜日
  24. 24. 結果(3) • かなり請求書らしい感じにできた! Render :pdf Rails3系対応WickedPDFで簡単PDF出力 2012/05/29 【第2回】Railsだったり勉強会12年5月29日火曜日
  25. 25. まとめ • PDFで出力させるのって簡単! • gem wicked_pdf • gem wkhtmltopdf-binary • render :pdf • <meta http-equiv="content-type" content="text/html; charset=utf-8" /> • (TeXと連携するとか言わなくて良かった) Render :pdf Rails3系対応WickedPDFで簡単PDF出力 2012/05/29 【第2回】Railsだったり勉強会12年5月29日火曜日
  26. 26. 参考資料 • 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 aks 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/ Render :pdf Rails3系対応WickedPDFで簡単PDF出力 2012/05/29 【第2回】Railsだったり勉強会12年5月29日火曜日
  27. 27. ご清聴ありがとうございました!12年5月29日火曜日

×