Module: PdfWritingToolsActions
- Defined in:
- lib/pdf_writing_tools_actions.rb
Overview
Nella parte PRIVATE di questa classe, inserire solo metodi che eseguano le action ( ossia che realizzino la scrittura del pdf) … le singole actions, verrano eseguite tramite i metodi privati di questa classe
Class Method Summary collapse
-
.atomic_text_action(atomic_text) ⇒ Object
Per “atomic_text” si intende testo che non contiene ulteriore “struttura” pesudo html.
-
.bullet_action ⇒ Object
Questa action, contiene istruzioni per disegnare un “bullet”, ossia un oggetto grafico, tipo un segno di spunta accanto all’elemento di una lista.
-
.execute_actions(pdf, actions, last_actn_name, data) ⇒ Object
Esegue le azioni, andando a concatenare quelle “contigue” nella lista, che riguardano la scrittura di testo.
-
.indent_action(indent_spaces = 4) ⇒ Object
Questa action, contiene istruzioni per disegnare nel pdf indent_spaces spazi, in modo da creare degli extra spazi, utili per i rientri.
-
.new_line_action ⇒ Object
Questa action contiene istruzioni per disegnare un “a capo” nel PDF.
- .tr_action(xml_obj = nil, widths = nil) ⇒ Object
Class Method Details
.atomic_text_action(atomic_text) ⇒ Object
Per “atomic_text” si intende testo che non contiene ulteriore “struttura” pesudo html
52 53 54 |
# File 'lib/pdf_writing_tools_actions.rb', line 52 def self.atomic_text_action(atomic_text) [{ action_name: :draw_formatted_text, data: [{ text: atomic_text }] }] end |
.bullet_action ⇒ Object
Questa action, contiene istruzioni per disegnare un “bullet”, ossia un oggetto grafico, tipo un segno di spunta accanto all’elemento di una lista
72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/pdf_writing_tools_actions.rb', line 72 def self.bullet_action [ { action_name: :draw_image, data: { url: File.("../../assets/bullet.png", __FILE__) # Pallino } } ] end |
.execute_actions(pdf, actions, last_actn_name, data) ⇒ Object
Esegue le azioni, andando a concatenare quelle “contigue” nella lista, che riguardano la scrittura di testo. La lista actions, in sostanza comprende più azioni. Quelle contigue che riguardano la scrittura di testo, non vanno eseguite singolarmente, ma devono essere “fuse” e poi eseguite. Le action che riguardano la “scrittura” di un immagine invece, non possono essere fuse, pertanto vanno eseguite singolarmente
30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/pdf_writing_tools_actions.rb', line 30 def self.execute_actions(pdf, actions, last_actn_name, data) actions.each do |action| if action[:action_name] == :draw_formatted_text last_actn_name, data = text_action(pdf, action, last_actn_name, data) elsif action[:action_name] == :draw_image last_actn_name, data = img_action(pdf, action, last_actn_name, data) elsif action[:action_name] == :draw_tr last_actn_name, data = draw_tr(pdf, action, last_actn_name, data) end end # Disegno l'ultima action della lista execute_action(pdf, last_actn_name, data) end |
.indent_action(indent_spaces = 4) ⇒ Object
Questa action, contiene istruzioni per disegnare nel pdf indent_spaces spazi, in modo da creare degli extra spazi, utili per i rientri
59 60 61 62 63 64 65 66 67 |
# File 'lib/pdf_writing_tools_actions.rb', line 59 def self.indent_action(indent_spaces = 4) [{ action_name: :draw_formatted_text, data: [ { text: Prawn::Text::NBSP * indent_spaces, styles: %i[bold white] } ] }] end |
.new_line_action ⇒ Object
Questa action contiene istruzioni per disegnare un “a capo” nel PDF
46 47 48 |
# File 'lib/pdf_writing_tools_actions.rb', line 46 def self.new_line_action [{ action_name: :draw_formatted_text, data: [{ text: "\n" }] }] end |
.tr_action(xml_obj = nil, widths = nil) ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/pdf_writing_tools_actions.rb', line 85 def self.tr_action(xml_obj=nil, widths=nil) text = "<tr><td>Uno</td><td>Due</td><td>Tre</td><td>Quattro</td></tr>" widths = [2.cm, 2.cm, 3.cm, 4.cm] xml_obj = Nokogiri::XML(text) [ { action_name: :draw_tr, data: { xml_obj: xml_obj, widths: widths } } ] end |