RubyとPrawnでPDFに線を引く
RFPDFからPrawnに移行して、いろいろと使っていますが、こなれてくると何の問題も感じなくなってきました。
特に日本語の扱いで、余計なところに頭を悩ませないところがいいですね。
ということで、知人にPrawnを紹介してみたら、線の描画でコードの書き方をど忘れしてしまったので、備忘のためにブログの記事にしておきます。
PrawnのWebサイトとはちょっと違う書き方をサンプルにしてみました。
下記のコードを実行する前にIPAフォントの最新版ではなくTTF版をダウンロードして、ソースと同じフォルダに入れておいて下さい。
#!/usr/bin/ruby require 'rubygems' require 'prawn' require 'prawn/measurement_extensions' #PDFの初期化 pdf = Prawn::Document.new(:page_size => "A4", :page_layout => :landscape) #明朝体での文字列出力 pdf.font "ipam.ttf" pdf.text "表ソフトPDFがきちんと出力されるかテスト", :at => [100,200], :size => 24 #ゴシック体での文字列出力 pdf.font "ipag.ttf" pdf.text "フォントを変えて出力してみたり...", :at => [100,300], :size => 16 #普通の直線を書いてみる pdf.line_width = 1 pdf.line [100,100], [200, 200] pdf.line [100,100], [100, 200] pdf.stroke #破線を書いてみる pdf.dash = 5 pdf.line_width = 3 pdf.line [30.mm,10.mm], [2.mm, 2.mm] pdf.line [30.mm,10.mm], [10.mm, 20.mm] pdf.stroke #ファイルの生成 pdf.render_file("sample.pdf")
少し説明をすると、位置の設定は基本的にポイントという単位で行いますが、エクステンションをrequireすることで簡単に単位を変換する事ができます。
textにおける:at => [left, top]が文字列を表示する位置の指定になるのですが、これは先頭文字の左下を指定することになりますので、ご注意下さい。
また、lineの数値は始点と終点の順番で
line [felt, top], [left, top]
という意味になっています。
dashの指定をすると、指定した長さ毎の破線を描画でき、dash = 0 とすると普通の直線に戻ります。
帳票や一覧を作成する時にとても便利。
どうですか?PDFの生成でお困りの方がおられましたら、Prawnを使ってみられませんか
##### 追記 #####
投稿当時のPrawnのバージョンは0.6でしたが2014年1月のバージョンは0.14で上記のスクリプトはそのままでは動かなくなっているようです。
既知の対策として、「pdf.text」の部分を「pdf.draw_text」に変更すると動きますので、ご利用時にはご注意下さい。
もし他にも修正の必要な箇所がありましたら、コメントなどでご指摘いただけると助かります。
| 固定リンク
| コメント (4)
| トラックバック (0)
最近のコメント