This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
| Generating PDF Files | ||
|---|---|---|
| Code | Expected | Actual |
require 'rubygems' require 'pdf/writer' |
false | false |
pdf = PDF::Writer.new; false
pdf.text("LOST\nDINOSAUR", :justification => :center, :font_size => 42,
:left => 50, :right => 50)
pdf.image("sue.png", :left=> 100, :justification => :center, :resize => 0.75)
pdf.text(%{Three-year-old <i>Tyrannosaurus rex</i>\nSpayed\nResponds to "Sue"},
:left => 80, :font_size => 20, :justification => :left)
pdf.text("(555) 010-7829", :justification => :center, :font_size => 36)
pdf.rectangle(pdf.left_margin + 25, pdf.y-25,
pdf.margin_width-50, pdf.margin_height-pdf.y+50).stroke; false
pdf.save_as('flyer.pdf')
pdf.rectangle(pdf.left_margin, pdf.y-25,
pdf.margin_width, pdf.margin_height-pdf.y+25).stroke
require 'rubygems'
require 'pdf/writer'
class Certificate
def initialize(achievement)
@without_name = Marshal.dump(generate_pdf(achievement))
end
def award_to(name)
pdf = Marshal.load(@without_name)
pdf.move_pointer(-225)
pdf.text("<i>#{name}</i>", :font_size => 64,
:justification => :center)
return pdf
end
private
def generate_pdf(achievement)
pdf = PDF::Writer.new( :orientation => :landscape )
pdf.info.title = "Certificate of Achievement"
draw_border(pdf, 10, 12, 16, 18)
draw_text(pdf, achievement)
return pdf
end
def draw_border(pdf, *px_pos)
px_pos.each do |px|
pdf.rectangle(px, px, pdf.page_width - (px * 2),
pdf.page_height - (px * 2)).stroke
end
end
def draw_text(pdf, achievement)
pdf.select_font "Times-Roman"
pdf.text("\n", :font_size => 52)
pdf.text("Certificate of Achievement\n", :justification => :center)
pdf.text("\n", :font_size => 18)
pdf.text("hereby granted to\n", :justification => :center)
pdf.text("\n\n", :font_size => 64)
pdf.text("in recognition of achieving the status of",
:font_size => 18, :justification => :center)
pdf.text(achievement, :font_size => 64, :justification => :center)
end
end
certificate = Certificate.new('Ruby Hacker'); false
['Tricia Ball', 'Marty Wise', 'Dung Nguyen'].each do |name|
certificate.award_to(name).save_as("#{name}.pdf")
end |
["Tricia Ball", "Marty Wise", "Dung Nguyen"] | |