Module: PdfWritingToolsProcess
- Defined in:
- lib/pdf_writing_tools_process.rb
Class Method Summary collapse
-
.process_xml_obj(xml_obj, properties, attributes = {}) ⇒ Object
Produce le actions necessarie per disegnare nel PDF un determinato “tag”.
-
.process_xml_tag_b(xml_obj, properties) ⇒ Object
Dato un oggetto rappresentante il tag b html, processa ricorsivamente i suoi figli cosi’ da ottenere le action da applicare per la creazione del pdf.
-
.process_xml_tag_h1(xml_obj, properties) ⇒ Object
Al momento assumo che h1 contenga solo testo, poi eventualmente renderla ricorsiva permettendo a h1 di contenere altri tag.
-
.process_xml_tag_i(xml_obj, properties) ⇒ Object
Dato un oggetto rappresentante il tag i html, processa ricorsivamente i suoi figli cosi’ da ottenere le action da applicare per la creazione del pdf.
-
.process_xml_tag_li(xml_obj, _properties, idx = nil) ⇒ Object
Produce le “actions” che permettono di disengare nel PDF, l’elemento della lista indicato da li.
-
.process_xml_tag_ol(xml_obj, properties, idx_start = '1') ⇒ Object
Produce le “actions” che permettono di disegnare nel PDF, la lista contenuta nel tag ol.
-
.process_xml_tag_p(xml_obj, properties) ⇒ Object
Produce le “actions” che permettono di disegnare nel PDF, il contenuto del tag p.
-
.process_xml_tag_span(xml_obj, properties) ⇒ Object
Al momento assumo che span contenga solo testo, poi eventualmente renderla ricorsiva permettendo a span di contenere altri tag.
- .process_xml_tag_table(xml_obj, properties) ⇒ Object
- .process_xml_tag_tr(xml_obj, properties) ⇒ Object
-
.process_xml_tag_ul(xml_obj, properties) ⇒ Object
Produce le “actions” che permettono di disegnare nel PDF, la lista contenuta nel tag ul.
-
.process_xml_text(xml_obj, properties, size = 12, upcase = false, color = "#000000") ⇒ Object
Produce la “action” che permette di disegnare nel pdf, il testo con le proprieta’ specificate in proprerties.
- .string_to_attributes(s) ⇒ Object
Class Method Details
.process_xml_obj(xml_obj, properties, attributes = {}) ⇒ Object
Produce le actions necessarie per disegnare nel PDF un determinato “tag”
137 138 139 140 141 142 143 144 145 146 |
# File 'lib/pdf_writing_tools_process.rb', line 137 def self.process_xml_obj(xml_obj, properties, attributes={}) case xml_obj.name when 'text', 'b', 'i', 'ul', 'li', 'p', 'h1', 'ol', 'span', 'table' @process_xml_tag_table[xml_obj.name].call(xml_obj, properties) when 'br' PdfWritingToolsActions.new_line_action else [] # Non previsto end end |
.process_xml_tag_b(xml_obj, properties) ⇒ Object
Dato un oggetto rappresentante il tag b html, processa ricorsivamente i suoi figli cosi’ da ottenere le action da applicare per la creazione del pdf
6 7 8 9 10 11 12 |
# File 'lib/pdf_writing_tools_process.rb', line 6 def self.process_xml_tag_b(xml_obj, properties) actions_list = [] xml_obj.children.each do |child| actions_list += process_xml_obj(child, properties + [:bold]) end actions_list end |
.process_xml_tag_h1(xml_obj, properties) ⇒ Object
Al momento assumo che h1 contenga solo testo, poi eventualmente renderla ricorsiva permettendo a h1 di contenere altri tag. Sebbene l’xml che sto processando non sia vero html, voglio cercare di dargli il più possibile lo stesso comportamento. All’interno di h1, possono essere presenti solo elementi inline. Al momento non controllo questa cosa, quindi preferisco tagliare la testa al toro, assumento che h1 contenga solo testo.
90 91 92 93 94 |
# File 'lib/pdf_writing_tools_process.rb', line 90 def self.process_xml_tag_h1(xml_obj, properties) actions_list = process_xml_text(xml_obj.child, [:bold], 16, true) PdfWritingToolsActions.new_line_action + actions_list + PdfWritingToolsActions.new_line_action * 2 end |
.process_xml_tag_i(xml_obj, properties) ⇒ Object
Dato un oggetto rappresentante il tag i html, processa ricorsivamente i suoi figli cosi’ da ottenere le action da applicare per la creazione del pdf
16 17 18 19 20 21 22 |
# File 'lib/pdf_writing_tools_process.rb', line 16 def self.process_xml_tag_i(xml_obj, properties) actions_list = [] xml_obj.children.each do |child| actions_list += process_xml_obj(child, properties + [:italic]) end actions_list end |
.process_xml_tag_li(xml_obj, _properties, idx = nil) ⇒ Object
Produce le “actions” che permettono di disengare nel PDF, l’elemento della lista indicato da li
59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/pdf_writing_tools_process.rb', line 59 def self.process_xml_tag_li(xml_obj, _properties, idx=nil) actions_list = [] xml_obj.children.each do |child| actions_list += process_xml_obj(child, []) end if idx PdfWritingToolsActions.new_line_action + PdfWritingToolsActions.atomic_text_action(idx) + PdfWritingToolsActions.indent_action(4) + actions_list else PdfWritingToolsActions.new_line_action + PdfWritingToolsActions.bullet_action + PdfWritingToolsActions.indent_action(4) + actions_list end end |
.process_xml_tag_ol(xml_obj, properties, idx_start = '1') ⇒ Object
Produce le “actions” che permettono di disegnare nel PDF, la lista contenuta nel tag ol
45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/pdf_writing_tools_process.rb', line 45 def self.process_xml_tag_ol(xml_obj, properties, idx_start='1') actions_list = [] idx = idx_start xml_obj.children.each do |child| if child.name == "li" actions_list += process_xml_tag_li(child, properties, idx) idx = idx.next end end actions_list end |
.process_xml_tag_p(xml_obj, properties) ⇒ Object
Produce le “actions” che permettono di disegnare nel PDF, il contenuto del tag p
75 76 77 78 79 80 81 82 |
# File 'lib/pdf_writing_tools_process.rb', line 75 def self.process_xml_tag_p(xml_obj, properties) actions_list = [] xml_obj.children.each do |child| actions_list += process_xml_obj(child, properties) end PdfWritingToolsActions.new_line_action + actions_list end |
.process_xml_tag_span(xml_obj, properties) ⇒ Object
Al momento assumo che span contenga solo testo, poi eventualmente renderla ricorsiva permettendo a span di contenere altri tag. Sebbene l’xml che sto processando non sia vero html, voglio cercare di dargli il più possibile lo stesso comportamento. All’interno di span, possono essere presenti solo elementi inline. Al momento non controllo questa cosa, quindi preferisco tagliare la testa al toro, assumento che span contenga solo testo.
102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/pdf_writing_tools_process.rb', line 102 def self.process_xml_tag_span(xml_obj, properties) span_styles_attributes = string_to_attributes(xml_obj[:style]) color = "#000000" if span_styles_attributes.has_key?("color") color = span_styles_attributes["color"] end actions_list = process_xml_text(xml_obj.child, properties, size=12, upcase=false, color) end |
.process_xml_tag_table(xml_obj, properties) ⇒ Object
116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/pdf_writing_tools_process.rb', line 116 def self.process_xml_tag_table(xml_obj, properties) # Processo i figli della tabella che devono essere due # thead # tbody xml_obj.children.each do |child| end p xml_obj[:width] p 20.cm / 7.0 [] end |
.process_xml_tag_tr(xml_obj, properties) ⇒ Object
129 130 131 132 |
# File 'lib/pdf_writing_tools_process.rb', line 129 def self.process_xml_tag_tr(xml_obj, properties) end |
.process_xml_tag_ul(xml_obj, properties) ⇒ Object
Produce le “actions” che permettono di disegnare nel PDF, la lista contenuta nel tag ul
33 34 35 36 37 38 39 40 41 |
# File 'lib/pdf_writing_tools_process.rb', line 33 def self.process_xml_tag_ul(xml_obj, properties) actions_list = [] xml_obj.children.each do |child| if child.name == "li" actions_list += process_xml_obj(child, properties) end end actions_list end |
.process_xml_text(xml_obj, properties, size = 12, upcase = false, color = "#000000") ⇒ Object
Produce la “action” che permette di disegnare nel pdf, il testo con le proprieta’ specificate in proprerties
26 27 28 29 |
# File 'lib/pdf_writing_tools_process.rb', line 26 def self.process_xml_text(xml_obj, properties, size = 12, upcase = false, color = "#000000") data = { text: (upcase ? xml_obj.text.upcase : xml_obj.text) + ' ', styles: properties, size: size, color: color[1..-1] } [{ action_name: :draw_formatted_text, data: [data] }] end |
.string_to_attributes(s) ⇒ Object
148 149 150 151 152 153 154 155 156 157 |
# File 'lib/pdf_writing_tools_process.rb', line 148 def self.string_to_attributes(s) result = {} s.split(";").each do |el| e = el.split(":") result[e[0]] = e[1] end result end |