-
-
Save sahidursuman/2d5fbf4bd1f390e18388a77ffd0d0c77 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
require "prawn/table" | |
require "prawn" | |
require 'pp' | |
require 'barby' | |
require 'barby/outputter/png_outputter' | |
require "barby/barcode/qr_code" | |
require 'stringio' | |
class TodoDoc < Prawn::Document | |
def todo_list=(data) | |
data = check_and_fix_todo_list_format(data) | |
@todo_list=data | |
end | |
def check_and_fix_todo_list_format(data=nil) | |
list = data||@todo_list | |
list = list.map{|e| | |
e = e.map{|e| [e] } if e.is_a? Array | |
e = [[e]] unless e.is_a? Array | |
e[1]||= [""] | |
e[2]||= ["about:blank"] | |
e[2]= [make_table( [[Date.today.strftime, {image: qr_blob(e[2][0])} ]],cell_style:{:borders=>[]},position: :right )] | |
e | |
} | |
list | |
end | |
def qr_blob(data) | |
#data = "http://takuya-1st.hatenablog.jp/entry/" + Date.today.strftime("%Y/%m/%d") | |
barcode = Barby::QrCode.new(data.encode("UTF-8")) | |
blob = Barby::PngOutputter.new(barcode).to_png( margin:1,height:50 ) #Raw PNG data | |
StringIO.new blob | |
end | |
def make_todo_table() | |
data = @todo_list.pop | |
data ||= [[""],[""],[""]] | |
table(data){ | |
column(0).width = 270 | |
row(0).font = "/Library/Fonts/Microsoft/Meiryo Bold.ttf" | |
row(0).size = 30 | |
row(0).align = :center | |
row(0).height= 40 | |
row(1).size = 10 | |
row(1).height= 100 | |
row(2).size = 10 | |
row(2).height= 40 | |
} | |
end | |
def make_page() | |
[ | |
[0,720],[0,540],[0,360],[0,180], | |
[270,720],[270,540],[270,360],[270,180], | |
].each{|e| | |
bounding_box( e , height:200, width:300){ | |
make_todo_table() | |
} | |
} | |
end | |
def layout | |
while @todo_list.size > 0 do | |
make_page() | |
start_new_page() if @todo_list.size > 0 | |
end | |
end | |
end | |
f_name = File.basename(__FILE__, ".rb")+".pdf" | |
TodoDoc.generate(f_name,{ :page_layout => :portrait,:margin=>40 }) {|pdf| | |
#pdf.stroke_axis | |
pdf.font "/Library/Fonts/Microsoft/meiryo.ttf" | |
todo_list = [] | |
todo_list << "404ページ修正" | |
todo_list << "エラーページ修正" | |
todo_list << "処理エラー通知" | |
todo_list << "課金動作の確認" | |
todo_list << ["メール送信確認", "メアド、送信元の確認、SMTPサーバーのチェック", "http://takuya-1st.hatenablog.jp/archive/"+Date.today.strftime("%Y/%m/%d") ] | |
todo_list << "設定ファイル場所変更" | |
todo_list << "課金テスト" | |
pdf.todo_list = todo_list | |
pdf.layout | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment