pdf_writing_tools 0.0.20 → 0.0.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/pdf_writing_tools.rb +62 -25
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b86239df8011a50e9180eac3b9e61ca5dd3d479cfcda975c027bed0f920b8517
4
- data.tar.gz: f747087dfd3a4a483fb5611758d7b4501eb6377ac9ab04f9f3d5b11c4851553d
3
+ metadata.gz: 1d2bb105508a3b9d4530fc61ee7e069ff809e834f2d67e3b1868d358bc4dd0c8
4
+ data.tar.gz: 728a3eaf9c32d7a056095c0b65bb4a97938773a326d0db0bd41b032819461e18
5
5
  SHA512:
6
- metadata.gz: 8d6750a12aaab5b59806a12f2150cf137483d0b0cb6398244584020ab56379492e1db7ff04d5fc53ee19e396ae10b02c0fd92443f207f02e1a2cd54bdb1b2864
7
- data.tar.gz: e466eecd65361c97f79254caf2ed651e499986c62538e89c53b7675ba9ceb33838b811d7318e96c17f0d9511f1f63f8d5e3f0858d54c7251f66c3f1ec76ba363
6
+ metadata.gz: f17b5557e4a7eb58a60e01fe7d3f7792c83e5329164afd5e25b0183f48475b37a5ab7925b0f3049e29f22661d3e40aec52f9c44e132f1695a988c22ff53d056e
7
+ data.tar.gz: bb2a5b0c0fd1b3d5089ac562286d548b10774faeb6abe6159e0e76787e19eb025db0b819a9f204b05dac95dae3e34bcbaf70f12f95de9b402fbaecdfcbdcc0bf
@@ -59,7 +59,7 @@ module PdfWritingTools
59
59
  # quello basso della pagina).
60
60
  # Bisogna pertanto prestare attenzione quando si dovessero mischiare primitive prawn
61
61
  # con queste funzioni.
62
- def self.draw_cell_fixed_height(pdf, x, y, w, h, t, opts={}, auto_y=false, no_background=false)
62
+ def self.draw_cell_fixed_height(pdf, draw_simulation, x, y, w, h, t, opts={}, auto_y=false, no_background=false)
63
63
  t = (t.class == String ? [{text: t}] : t)
64
64
  font_size = opts[:font_size] || 10
65
65
  style = opts[:style] || :normal
@@ -86,13 +86,15 @@ module PdfWritingTools
86
86
  pdf.fill_color(background_color)
87
87
 
88
88
  # Disegna lo sfondo della cella
89
- if no_background
89
+ if no_background or draw_simulation
90
90
  else
91
91
  pdf.fill_rectangle([x, y_pos1], w, h)
92
92
  end
93
93
 
94
- pdf.stroke_color border_color
95
- pdf.stroke_rectangle([x, y_pos1], w, h)
94
+ if not draw_simulation
95
+ pdf.stroke_color border_color
96
+ pdf.stroke_rectangle([x, y_pos1], w, h)
97
+ end
96
98
 
97
99
  # Colore del testo nella cella
98
100
  pdf.fill_color(font_color)
@@ -100,7 +102,23 @@ module PdfWritingTools
100
102
  at = [x + left_padding, y_pos2]
101
103
  width = w - left_padding - right_padding
102
104
  height = h - top_padding - bottom_padding + 1.cm
103
- result = pdf.formatted_text_box(t, width: width, height: height, at: at, size: font_size, style: style, align: align, valign: valign)
105
+ #result = pdf.formatted_text_box(t, width: width, height: height, at: at, size: font_size, style: style, align: align, valign: valign)
106
+
107
+ b = Prawn::Text::Formatted::Box.new(
108
+ t,
109
+ {
110
+ width: width,
111
+ height: height,
112
+ at: at,
113
+ size: font_size,
114
+ style: style,
115
+ align: align,
116
+ valign: valign,
117
+ document: pdf
118
+ }
119
+ )
120
+
121
+ result = b.render(:dry_run => draw_simulation)
104
122
  end
105
123
 
106
124
  result
@@ -179,7 +197,7 @@ module PdfWritingTools
179
197
 
180
198
  if no_background
181
199
  else
182
- pdf.fill_and_stroke_rectangle([x, y_pos2], (w + left_padding + right_padding), (h+top_padding+bottom_padding))
200
+ pdf.fill_and_stroke_rectangle([x, y_pos2], w, h+top_padding+bottom_padding)
183
201
  end
184
202
  # ... e infine, sopra lo sfondo disegno il testo
185
203
  pdf.fill_color(font_color) # colore del testo
@@ -232,10 +250,10 @@ module PdfWritingTools
232
250
  cell_opts[:right_padding] = padding[:right_padding]
233
251
  cell_opts[:top_padding] = padding[:top_padding]
234
252
  cell_opts[:bottom_padding] = padding[:bottom_padding]
235
- cell_opts[:pdf_width] = 21.cm
236
- cell_opts[:pdf_height] = 297.mm
253
+ cell_opts[:pdf_width] = pdf_width
254
+ cell_opts[:pdf_height] = pdf_height
237
255
 
238
- draw_cell_fixed_height( pdf, x+offset, y, width, height, texts[i], cell_opts, auto_y)
256
+ draw_cell_fixed_height( pdf, false, x+offset, y, width, height, texts[i], cell_opts, auto_y)
239
257
 
240
258
  offset += width
241
259
  end
@@ -299,11 +317,14 @@ module PdfWritingTools
299
317
  cell_opts[:right_padding] = padding[:right_padding]
300
318
  cell_opts[:top_padding] = padding[:top_padding]
301
319
  cell_opts[:bottom_padding] = padding[:bottom_padding]
302
- cell_opts[:pdf_height] = 297.mm
303
- cell_opts[:pdf_weigth] = 21.cm
320
+ cell_opts[:pdf_height] = pdf_height
321
+ cell_opts[:pdf_width] = pdf_width
322
+ cell_opts[:pdf_margin_top] = pdf_margin_top
323
+ cell_opts[:pdf_margin_bottom] = pdf_margin_bottom
324
+ cell_opts[:pdf_margin_left] = pdf_margin_left
325
+ cell_opts[:pdf_margin_right] = pdf_margin_right
304
326
 
305
- draw_simulation = true
306
- r = draw_cell_auto_height(pdf, draw_simulation, x+offset, y, width, texts[i], cell_opts, auto_y)
327
+ r = draw_cell_auto_height(pdf, true, x+offset, y, width, texts[i], cell_opts, auto_y)
307
328
 
308
329
 
309
330
  if r[:height] > max_cell_height
@@ -314,12 +335,25 @@ module PdfWritingTools
314
335
  end
315
336
 
316
337
 
317
- # Non voglio che la riga ecceda il margine di pagina, quindi se così fosse
318
- # cambio pagina
338
+ # Non voglio che la riga ecceda il margine di pagina...
319
339
  if (y + max_cell_height) > (pdf_height - pdf_margin_bottom)
320
- #max_cell_height = pdf_height - pdf_margin_bottom - y
321
- pdf.start_new_page
322
- y = pdf_margin_top
340
+ q = 1
341
+
342
+ # Se fino al margine di pagina, non ho almeno q cm... **
343
+ if (pdf_height - pdf_margin_bottom - y) < q.cm
344
+ # ...cambio pagina...
345
+ pdf.start_new_page
346
+ # ... e mi riposiziono all'inizio della pagina nuova
347
+ y = pdf_margin_top
348
+ else
349
+ # ... altrimenti, reimposto max_cell_height: la riga verrà spezzata su due pagine.
350
+ max_cell_height = pdf_height - pdf_margin_bottom - y
351
+ end
352
+
353
+ # ** non voglio imporre il vincolo "una riga deve stare in una pagina", ma contemporaneamente, voglio evitare che
354
+ # si creino delle righe "sottili" sul bordo inferiore della pagina; così sottili che non vi si possa disegnare testo
355
+ # e quindi appaiano vuote. Questo controllo non è risolutivo: x, dovrebbe dipendere dalla dimensione del carattere
356
+ # usato per il testo della riga, ma in questa fase, x.cm = 1.cm, mi pare una stima sufficiente
323
357
  end
324
358
 
325
359
  # A seguito della simulazione, ho ottenuto l'altezza di riga...
@@ -348,12 +382,16 @@ module PdfWritingTools
348
382
  cell_opts[:right_padding] = padding[:right_padding]
349
383
  cell_opts[:top_padding] = padding[:top_padding]
350
384
  cell_opts[:bottom_padding] = padding[:bottom_padding]
351
- cell_opts[:pdf_height] = 297.mm
352
- cell_opts[:pdf_weigth] = 21.cm
353
-
385
+ cell_opts[:pdf_height] = pdf_height
386
+ cell_opts[:pdf_width] = pdf_width
387
+ cell_opts[:pdf_margin_top] = pdf_margin_top
388
+ cell_opts[:pdf_margin_bottom] = pdf_margin_bottom
389
+ cell_opts[:pdf_margin_left] = pdf_margin_left
390
+ cell_opts[:pdf_margin_right] = pdf_margin_right
391
+
354
392
  # ...disegno le celle vere e proprie ad altezza fissa, con l'altezza
355
393
  # ricavata dal passo precedente.
356
- r = draw_cell_fixed_height(pdf, x+offset, y, width, max_cell_height, texts[i], cell_opts, auto_y)
394
+ r = draw_cell_fixed_height(pdf, draw_simulation, x+offset, y, width, max_cell_height, texts[i], cell_opts, auto_y)
357
395
 
358
396
  # Gli eventuali "testi residui" (es. raggiunto fine pagina) li raccolgo
359
397
  # nel seguente array
@@ -375,10 +413,9 @@ module PdfWritingTools
375
413
  y = pdf_margin_top # Posiziono il cursore ad inizio della nuova pagina
376
414
  end
377
415
  end
416
+
378
417
 
379
-
380
-
381
- pdf.y = (pdf_height - new_y)
418
+ #pdf.y = (pdf_height - new_y)
382
419
 
383
420
  return new_y
384
421
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pdf_writing_tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.20
4
+ version: 0.0.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - JSalvo1978
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-09 00:00:00.000000000 Z
11
+ date: 2024-04-22 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Plugin for write pdf in a simplified manner, using prawn as backend
14
14
  email: