Class: ClockworkComicPDF::PDFMaker
Overview
this parses the sections of a book into a pdf file
Instance Attribute Summary collapse
Instance Method Summary
collapse
#convert_complex_position, #convert_position, #convert_simple_position, #convert_size, #convert_val, #get_h_center, #get_v_center, #parse_options
#make_name, #make_text_box, #print_comic_image, #print_comic_pages, #print_formatted_text_box, #print_section, #print_section_break, #print_sections, #print_text_box
#make_toc_item, #print_toc
Constructor Details
#initialize(book) ⇒ PDFMaker
Returns a new instance of PDFMaker.
20
21
22
|
# File 'lib/clockwork_comic_pdf/pdf_maker.rb', line 20
def initialize(book)
self.book = book
end
|
Instance Attribute Details
#book ⇒ Object
Returns the value of attribute book.
12
13
14
|
# File 'lib/clockwork_comic_pdf/pdf_maker.rb', line 12
def book
@book
end
|
#content_start ⇒ Object
Returns the value of attribute content_start.
12
13
14
|
# File 'lib/clockwork_comic_pdf/pdf_maker.rb', line 12
def content_start
@content_start
end
|
#current_page ⇒ Object
Returns the value of attribute current_page.
12
13
14
|
# File 'lib/clockwork_comic_pdf/pdf_maker.rb', line 12
def current_page
@current_page
end
|
#debug ⇒ Object
Returns the value of attribute debug.
12
13
14
|
# File 'lib/clockwork_comic_pdf/pdf_maker.rb', line 12
def debug
@debug
end
|
#page_index ⇒ Object
16
17
18
|
# File 'lib/clockwork_comic_pdf/pdf_maker.rb', line 16
def page_index
@page_index ||= []
end
|
#printing_body ⇒ Object
Returns the value of attribute printing_body.
12
13
14
|
# File 'lib/clockwork_comic_pdf/pdf_maker.rb', line 12
def printing_body
@printing_body
end
|
#trim_offset ⇒ Object
Returns the value of attribute trim_offset.
12
13
14
|
# File 'lib/clockwork_comic_pdf/pdf_maker.rb', line 12
def trim_offset
@trim_offset
end
|
Instance Method Details
#debug_stroke(pdf) ⇒ Object
106
107
108
109
110
111
112
113
114
|
# File 'lib/clockwork_comic_pdf/pdf_maker.rb', line 106
def debug_stroke(pdf)
pdf.stroke_bounds
pdf.stroke do
pdf.line [0, 0], [pdf.bounds.width, pdf.bounds.height]
pdf.line [pdf.bounds.width, 0], [0, pdf.bounds.height]
pdf.line [pdf.bounds.width / 2,
pdf.bounds.height], [pdf.bounds.width / 2, 0]
end
end
|
#make_offset_page(pdf) ⇒ Object
63
64
65
66
67
68
69
|
# File 'lib/clockwork_comic_pdf/pdf_maker.rb', line 63
def make_offset_page(pdf)
margin = Array.new(book.margin)
if pdf.page_number.odd? then margin[1] += book.offset_from_spine
else margin[3] += book.offset_from_spine
end
pdf.start_new_page(size: book.page_size, margin: margin)
end
|
#make_trim_page(pdf) ⇒ Object
71
72
73
74
75
76
|
# File 'lib/clockwork_comic_pdf/pdf_maker.rb', line 71
def make_trim_page(pdf)
margin = Array.new(book.margin)
pdf.start_new_page(size: [book.page_size[0] - book.offset_from_spine,
book.page_size[1]],
margin: margin)
end
|
#new_page(pdf) ⇒ Object
54
55
56
57
58
59
60
61
|
# File 'lib/clockwork_comic_pdf/pdf_maker.rb', line 54
def new_page(pdf)
if trim_offset then make_trim_page(pdf)
else make_offset_page(pdf)
end
pdf.font(book.font)
print_body_page(pdf) if printing_body
debug_stroke(pdf) if debug
end
|
#print ⇒ Object
24
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/clockwork_comic_pdf/pdf_maker.rb', line 24
def print
book.validate
book.versions.each do |version|
self.content_start = nil
self.printing_body = false
self.current_page = nil
self.page_index = nil
self.debug = false
print_version(version)
end
end
|
#print_body_page(pdf) ⇒ Object
78
79
80
81
82
|
# File 'lib/clockwork_comic_pdf/pdf_maker.rb', line 78
def print_body_page(pdf)
self.current_page += 1
(pdf) unless book..nil?
print_page_num(pdf) if book.print_pagenum
end
|
#print_cover(pdf, version) ⇒ Object
45
46
47
48
49
50
51
52
|
# File 'lib/clockwork_comic_pdf/pdf_maker.rb', line 45
def print_cover(pdf, version)
pdf.go_to_page 0
return if book.cover.nil?
cover = book.cover
pdf.start_new_page(size: cover.size, margin: 0)
pdf.image("#{cover.path}/#{version.name}/#{cover.file}",
at: pdf.bounds.top_left, scale: 72.0 / version.dpi.to_f)
end
|
84
85
86
87
88
89
90
91
92
93
94
95
|
# File 'lib/clockwork_comic_pdf/pdf_maker.rb', line 84
def (pdf)
head = book.
options = { size: head.size, align: head.align, width: pdf.bounds.width }
text = pdf.page_number.even? ? head.left_text : head.right_text
options[:at] = [pdf.bounds.left, pdf.bounds.top + 0.25.in]
options[:valign] = :center
options[:height] = 0.25.in
if options[:align] == :alternating
options[:align] = even_page ? :left : :right
end
pdf.text_box(text, options)
end
|
#print_page_num(pdf) ⇒ Object
97
98
99
100
101
102
103
104
|
# File 'lib/clockwork_comic_pdf/pdf_maker.rb', line 97
def print_page_num(pdf)
options = { at: pdf.bounds.bottom_left,
width: pdf.bounds.width,
align: :center,
size: 8 }
options[:height] = 0.25.in
pdf.text_box("#{self.current_page}", options)
end
|
#print_version(version) ⇒ Object
36
37
38
39
40
41
42
43
|
# File 'lib/clockwork_comic_pdf/pdf_maker.rb', line 36
def print_version(version)
self.trim_offset = version.trim_offset
pdf = Prawn::Document.new(info: book.info, font_size: book.font_size,
skip_page_creation: true)
print_sections(pdf, version)
print_cover(pdf, version) if version.print_cover
pdf.render_file "#{book.base_file_name} - #{version.name}.pdf"
end
|