104 lines
2.2 KiB
Ruby
104 lines
2.2 KiB
Ruby
|
require "prawn"
|
||
|
require "prawn/table"
|
||
|
require "pry"
|
||
|
|
||
|
class Prawn::Document
|
||
|
def background_color(color)
|
||
|
tmp_color = fill_color
|
||
|
canvas do
|
||
|
fill_color color
|
||
|
fill_rectangle [bounds.left, bounds.top], bounds.right, bounds.top
|
||
|
end
|
||
|
fill_color tmp_color
|
||
|
end
|
||
|
end
|
||
|
|
||
|
class Awakened2069
|
||
|
FONT_SIZE_CHAPTER = 48
|
||
|
FONT_SIZE_BODY = 10
|
||
|
|
||
|
attr_accessor :pdf, :chapter_title
|
||
|
|
||
|
def start_chapter(chapter_name)
|
||
|
@chapter_title = chapter_name
|
||
|
puts "Starting #{chapter_title}"
|
||
|
|
||
|
pdf.start_new_page
|
||
|
|
||
|
pdf.outline.update do
|
||
|
puts "\tAdding #{@awakened2069.chapter_title} on page #{page_number}"
|
||
|
section(@chapter_title, :destination => page_number)
|
||
|
end
|
||
|
|
||
|
puts "\tSetting font size"
|
||
|
pdf.font_size Awakened2069::FONT_SIZE_CHAPTER
|
||
|
pdf.font "Abess"
|
||
|
puts "\tPrinting chapter to document"
|
||
|
pdf.text chapter_title, :align => :center
|
||
|
|
||
|
puts "\tRestoring body text"
|
||
|
pdf.font "Goudy"
|
||
|
pdf.font_size FONT_SIZE_BODY
|
||
|
end
|
||
|
|
||
|
|
||
|
def generate
|
||
|
@pdf = Prawn::Document.new(:margin => 0)
|
||
|
pdf.font_families.update(
|
||
|
"Goudy" => {
|
||
|
:normal => "goudy.ttf",
|
||
|
:bold => "goudy-bold.ttf",
|
||
|
:italic => "goudy-italic.ttf"
|
||
|
},
|
||
|
"Abess" => {
|
||
|
:normal => "abess.ttf"
|
||
|
},
|
||
|
"Lilith" => {
|
||
|
:normal => "lilith.ttf"
|
||
|
},
|
||
|
"Goblin Hand" => {
|
||
|
:normal => "VTCGoblinHand.ttf",
|
||
|
:bold => "VTCGoblinHandBold.ttf",
|
||
|
:italic => "VTCGoblinHandItalic.ttf"
|
||
|
},
|
||
|
"Ultramarines" => {
|
||
|
:normal => "ultramarines.ttf"
|
||
|
},
|
||
|
"Unispace" => {
|
||
|
:normal => "unispace rg.ttf"
|
||
|
}
|
||
|
)
|
||
|
|
||
|
pdf.outline.instance_variable_set(:@awakened2069, self)
|
||
|
|
||
|
pdf.image("cover.png", :width => 612, :height => 792)
|
||
|
|
||
|
pdf.start_new_page(:margin => 50)
|
||
|
|
||
|
pdf.font "Ultramarines"
|
||
|
pdf.font_size 72
|
||
|
pdf.text "Awakened 2069", :align => :center
|
||
|
|
||
|
pdf.font "Goudy"
|
||
|
pdf.font_size 36
|
||
|
pdf.text "\nGuide To The Mage: the Awakening, Second Edition Game On Discord. \n\nInvite Code:", :align => :center
|
||
|
|
||
|
pdf.font "Unispace"
|
||
|
pdf.text "25MpfjP", :align => :center
|
||
|
|
||
|
pdf.font "Goudy"
|
||
|
|
||
|
pdf.font_size 24
|
||
|
pdf.text "\n\nAll content in this manual is inspired by the Storyteller and the players", :align => :center
|
||
|
|
||
|
start_chapter "Introduction"
|
||
|
|
||
|
|
||
|
|
||
|
pdf.render_file("writeup.pdf")
|
||
|
end
|
||
|
end
|
||
|
|
||
|
|
||
|
awakened2069 = Awakened2069.new
|
||
|
awakened2069.generate
|