pdf_writing_tools 0.0.20 → 0.0.21
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.
- checksums.yaml +4 -4
- data/lib/pdf_writing_tools.rb +46 -17
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5689acbfbb2ea127782f06799e8dfeac843c86d7116f63f60a21caec2f4bcd8c
|
4
|
+
data.tar.gz: 986bdeb9b09545b0873478f2f024c15a8bc019e4a3dd231d45d37b4379f9f8b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bdea9aea430d42471a7b08509317bc3585a25c3782898f79727c386037e19bcd84357d628686e471b90626d414646c6e5d3da32ac2726a3156579fd8feea3e9d
|
7
|
+
data.tar.gz: 54b31a363356052fd7f902076e7a1fec6f7141e17fdbdd2da2ae7027ed9b0266ceb6c4b62ff0e0aabd17b30da75abccfe17642e48818a5478c1c5e2662467f7d
|
data/lib/pdf_writing_tools.rb
CHANGED
@@ -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
|
-
|
95
|
-
|
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
|
@@ -235,7 +253,7 @@ module PdfWritingTools
|
|
235
253
|
cell_opts[:pdf_width] = 21.cm
|
236
254
|
cell_opts[:pdf_height] = 297.mm
|
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
|
@@ -302,8 +320,7 @@ module PdfWritingTools
|
|
302
320
|
cell_opts[:pdf_height] = 297.mm
|
303
321
|
cell_opts[:pdf_weigth] = 21.cm
|
304
322
|
|
305
|
-
|
306
|
-
r = draw_cell_auto_height(pdf, draw_simulation, x+offset, y, width, texts[i], cell_opts, auto_y)
|
323
|
+
r = draw_cell_auto_height(pdf, true, x+offset, y, width, texts[i], cell_opts, auto_y)
|
307
324
|
|
308
325
|
|
309
326
|
if r[:height] > max_cell_height
|
@@ -314,12 +331,25 @@ module PdfWritingTools
|
|
314
331
|
end
|
315
332
|
|
316
333
|
|
317
|
-
# Non voglio che la riga ecceda il margine di pagina
|
318
|
-
# cambio pagina
|
334
|
+
# Non voglio che la riga ecceda il margine di pagina...
|
319
335
|
if (y + max_cell_height) > (pdf_height - pdf_margin_bottom)
|
320
|
-
|
321
|
-
|
322
|
-
|
336
|
+
q = 1
|
337
|
+
|
338
|
+
# Se fino al margine di pagina, non ho almeno q cm... **
|
339
|
+
if (pdf_height - pdf_margin_bottom - y) < q.cm
|
340
|
+
# ...cambio pagina...
|
341
|
+
pdf.start_new_page
|
342
|
+
# ... e mi riposiziono all'inizio della pagina nuova
|
343
|
+
y = pdf_margin_top
|
344
|
+
else
|
345
|
+
# ... altrimenti, reimposto max_cell_height: la riga verrà spezzata su due pagine.
|
346
|
+
max_cell_height = pdf_height - pdf_margin_bottom - y
|
347
|
+
end
|
348
|
+
|
349
|
+
# ** non voglio imporre il vincolo "una riga deve stare in una pagina", ma contemporaneamente, voglio evitare che
|
350
|
+
# si creino delle righe "sottili" sul bordo inferiore della pagina; così sottili che non vi si possa disegnare testo
|
351
|
+
# e quindi appaiano vuote. Questo controllo non è risolutivo: x, dovrebbe dipendere dalla dimensione del carattere
|
352
|
+
# usato per il testo della riga, ma in questa fase, x.cm = 1.cm, mi pare una stima sufficiente
|
323
353
|
end
|
324
354
|
|
325
355
|
# A seguito della simulazione, ho ottenuto l'altezza di riga...
|
@@ -353,7 +383,7 @@ module PdfWritingTools
|
|
353
383
|
|
354
384
|
# ...disegno le celle vere e proprie ad altezza fissa, con l'altezza
|
355
385
|
# ricavata dal passo precedente.
|
356
|
-
r = draw_cell_fixed_height(pdf, x+offset, y, width, max_cell_height, texts[i], cell_opts, auto_y)
|
386
|
+
r = draw_cell_fixed_height(pdf, draw_simulation, x+offset, y, width, max_cell_height, texts[i], cell_opts, auto_y)
|
357
387
|
|
358
388
|
# Gli eventuali "testi residui" (es. raggiunto fine pagina) li raccolgo
|
359
389
|
# nel seguente array
|
@@ -375,10 +405,9 @@ module PdfWritingTools
|
|
375
405
|
y = pdf_margin_top # Posiziono il cursore ad inizio della nuova pagina
|
376
406
|
end
|
377
407
|
end
|
408
|
+
|
378
409
|
|
379
|
-
|
380
|
-
|
381
|
-
pdf.y = (pdf_height - new_y)
|
410
|
+
#pdf.y = (pdf_height - new_y)
|
382
411
|
|
383
412
|
return new_y
|
384
413
|
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.
|
4
|
+
version: 0.0.21
|
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-
|
11
|
+
date: 2024-01-11 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:
|