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

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_actionObject

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.expand_path("../../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_actionObject

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