PyPDFForm 2.2.6__py3-none-any.whl → 2.2.7__py3-none-any.whl
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.
Potentially problematic release.
This version of PyPDFForm might be problematic. Click here for more details.
- PyPDFForm/__init__.py +1 -1
- PyPDFForm/filler.py +5 -1
- PyPDFForm/template.py +4 -5
- PyPDFForm/utils.py +5 -2
- PyPDFForm/wrapper.py +7 -3
- {pypdfform-2.2.6.dist-info → pypdfform-2.2.7.dist-info}/METADATA +1 -1
- {pypdfform-2.2.6.dist-info → pypdfform-2.2.7.dist-info}/RECORD +10 -10
- {pypdfform-2.2.6.dist-info → pypdfform-2.2.7.dist-info}/WHEEL +1 -1
- {pypdfform-2.2.6.dist-info → pypdfform-2.2.7.dist-info}/licenses/LICENSE +0 -0
- {pypdfform-2.2.6.dist-info → pypdfform-2.2.7.dist-info}/top_level.txt +0 -0
PyPDFForm/__init__.py
CHANGED
PyPDFForm/filler.py
CHANGED
|
@@ -38,7 +38,7 @@ from .patterns import (WIDGET_KEY_PATTERNS, simple_flatten_generic,
|
|
|
38
38
|
simple_flatten_radio, simple_update_checkbox_value,
|
|
39
39
|
simple_update_dropdown_value, simple_update_radio_value,
|
|
40
40
|
simple_update_text_value)
|
|
41
|
-
from .template import get_widgets_by_page
|
|
41
|
+
from .template import get_widget_full_key, get_widgets_by_page
|
|
42
42
|
from .utils import (checkbox_radio_to_draw, extract_widget_property,
|
|
43
43
|
stream_to_io)
|
|
44
44
|
from .watermark import create_watermarks_and_draw, merge_watermarks_with_pdf
|
|
@@ -220,6 +220,7 @@ def get_drawn_stream(to_draw: dict, stream: bytes, action: str) -> bytes:
|
|
|
220
220
|
def fill(
|
|
221
221
|
template_stream: bytes,
|
|
222
222
|
widgets: Dict[str, WIDGET_TYPES],
|
|
223
|
+
use_full_widget_name: bool,
|
|
223
224
|
) -> bytes:
|
|
224
225
|
"""Fills a PDF form using watermark technique for complex rendering.
|
|
225
226
|
|
|
@@ -231,6 +232,7 @@ def fill(
|
|
|
231
232
|
Args:
|
|
232
233
|
template_stream: Input PDF form as bytes
|
|
233
234
|
widgets: Dictionary mapping field names to widget middleware
|
|
235
|
+
use_full_widget_name: If True, uses the full widget name as the key in the widgets dictionary
|
|
234
236
|
|
|
235
237
|
Returns:
|
|
236
238
|
bytes: Filled PDF form as bytes
|
|
@@ -253,6 +255,8 @@ def fill(
|
|
|
253
255
|
line_borders_to_draw[page] = []
|
|
254
256
|
for widget_dict in widget_dicts:
|
|
255
257
|
key = extract_widget_property(widget_dict, WIDGET_KEY_PATTERNS, None, str)
|
|
258
|
+
if use_full_widget_name:
|
|
259
|
+
key = get_widget_full_key(widget_dict)
|
|
256
260
|
text_needs_to_be_drawn = False
|
|
257
261
|
to_draw = x = y = None
|
|
258
262
|
|
PyPDFForm/template.py
CHANGED
|
@@ -246,15 +246,14 @@ def get_widgets_by_page(pdf: bytes) -> Dict[int, List[dict]]:
|
|
|
246
246
|
return result
|
|
247
247
|
|
|
248
248
|
|
|
249
|
-
def get_widget_full_key(widget: dict) ->
|
|
249
|
+
def get_widget_full_key(widget: dict) -> str:
|
|
250
250
|
"""Constructs a widget's full hierarchical key including parent names.
|
|
251
251
|
|
|
252
252
|
Args:
|
|
253
253
|
widget: PDF widget dictionary
|
|
254
254
|
|
|
255
255
|
Returns:
|
|
256
|
-
|
|
257
|
-
otherwise None
|
|
256
|
+
str: Full key in format "parent.child" if parent exists, otherwise the widget's key
|
|
258
257
|
"""
|
|
259
258
|
|
|
260
259
|
key = extract_widget_property(widget, WIDGET_KEY_PATTERNS, None, str)
|
|
@@ -264,9 +263,9 @@ def get_widget_full_key(widget: dict) -> Union[str, None]:
|
|
|
264
263
|
and T in widget[Parent].get_object()
|
|
265
264
|
and widget[Parent].get_object()[T] != key
|
|
266
265
|
):
|
|
267
|
-
|
|
266
|
+
key = f"{get_widget_full_key(widget[Parent].get_object())}.{key}"
|
|
268
267
|
|
|
269
|
-
return
|
|
268
|
+
return key
|
|
270
269
|
|
|
271
270
|
|
|
272
271
|
def construct_widget(widget: dict, key: str) -> Union[WIDGET_TYPES, None]:
|
PyPDFForm/utils.py
CHANGED
|
@@ -104,10 +104,13 @@ def checkbox_radio_to_draw(
|
|
|
104
104
|
return new_widget
|
|
105
105
|
|
|
106
106
|
|
|
107
|
-
def preview_widget_to_draw(
|
|
107
|
+
def preview_widget_to_draw(
|
|
108
|
+
widget_name: str, widget: WIDGET_TYPES, with_preview_text: bool
|
|
109
|
+
) -> Text:
|
|
108
110
|
"""Creates preview version of a widget showing field name/location.
|
|
109
111
|
|
|
110
112
|
Args:
|
|
113
|
+
widget_name: Name of the widget to generate preview for
|
|
111
114
|
widget: Widget to generate preview for
|
|
112
115
|
with_preview_text: Whether to include field name in preview
|
|
113
116
|
|
|
@@ -117,7 +120,7 @@ def preview_widget_to_draw(widget: WIDGET_TYPES, with_preview_text: bool) -> Tex
|
|
|
117
120
|
|
|
118
121
|
new_widget = Text(
|
|
119
122
|
name=widget.name,
|
|
120
|
-
value="{" + f" {
|
|
123
|
+
value="{" + f" {widget_name} " + "}" if with_preview_text else None,
|
|
121
124
|
)
|
|
122
125
|
new_widget.font = DEFAULT_FONT
|
|
123
126
|
new_widget.font_size = DEFAULT_FONT_SIZE
|
PyPDFForm/wrapper.py
CHANGED
|
@@ -362,9 +362,10 @@ class PdfWrapper(FormWrapper):
|
|
|
362
362
|
fill(
|
|
363
363
|
self.stream,
|
|
364
364
|
{
|
|
365
|
-
key: preview_widget_to_draw(value, True)
|
|
365
|
+
key: preview_widget_to_draw(key, value, True)
|
|
366
366
|
for key, value in self.widgets.items()
|
|
367
367
|
},
|
|
368
|
+
getattr(self, "use_full_widget_name"),
|
|
368
369
|
)
|
|
369
370
|
)
|
|
370
371
|
|
|
@@ -391,9 +392,10 @@ class PdfWrapper(FormWrapper):
|
|
|
391
392
|
fill(
|
|
392
393
|
self.stream,
|
|
393
394
|
{
|
|
394
|
-
key: preview_widget_to_draw(value, False)
|
|
395
|
+
key: preview_widget_to_draw(key, value, False)
|
|
395
396
|
for key, value in self.widgets.items()
|
|
396
397
|
},
|
|
398
|
+
getattr(self, "use_full_widget_name"),
|
|
397
399
|
)
|
|
398
400
|
),
|
|
399
401
|
color,
|
|
@@ -434,7 +436,9 @@ class PdfWrapper(FormWrapper):
|
|
|
434
436
|
if self.read():
|
|
435
437
|
self.widgets = set_character_x_paddings(self.stream, self.widgets)
|
|
436
438
|
|
|
437
|
-
self.stream = remove_all_widgets(
|
|
439
|
+
self.stream = remove_all_widgets(
|
|
440
|
+
fill(self.stream, self.widgets, getattr(self, "use_full_widget_name"))
|
|
441
|
+
)
|
|
438
442
|
|
|
439
443
|
return self
|
|
440
444
|
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
PyPDFForm/__init__.py,sha256=
|
|
1
|
+
PyPDFForm/__init__.py,sha256=r3unIF6eX0bQ9fRotGNv_5feWcA35-AiSA4k9gF3BR8,328
|
|
2
2
|
PyPDFForm/adapter.py,sha256=_5fP5UR-NzjDDayJmBRO36DgbnbUzNbjZtHZtPvSM14,1909
|
|
3
3
|
PyPDFForm/constants.py,sha256=3ed0j11cWd9Uo4s-XvZwwJojPSz8aqdmZgaEishWjqE,2342
|
|
4
4
|
PyPDFForm/coordinate.py,sha256=gQI7z-GsdCO33Qny5kXLBs6Y2TW5KO_mJ2in64fvXcg,16412
|
|
5
|
-
PyPDFForm/filler.py,sha256=
|
|
5
|
+
PyPDFForm/filler.py,sha256=f8xgMBTCVWpwQm56ojhLXOo6A_R7oQCooSLUD5qZICA,14253
|
|
6
6
|
PyPDFForm/font.py,sha256=eRbDyQFhXUkHzyZvCtru9Ypg_ukfbBAnSM5xNzPb5ss,7280
|
|
7
7
|
PyPDFForm/image.py,sha256=aYk7BC-AHiqt73durGIQ3e6gE5Ggbdr8jmkCUaQdsk8,1627
|
|
8
8
|
PyPDFForm/patterns.py,sha256=Zv80gZswYFlFuo6eXL1j8bMyckavXPuw55D8IzcvIW0,9472
|
|
9
|
-
PyPDFForm/template.py,sha256=
|
|
10
|
-
PyPDFForm/utils.py,sha256=
|
|
9
|
+
PyPDFForm/template.py,sha256=WFU6KnGWJ06lQ1GdjdYxmfToL2ash_c9g4z2yiWGebo,18889
|
|
10
|
+
PyPDFForm/utils.py,sha256=QxJSG96FHGch863UdBPT8DdTKN9gVzQzA2ezifTm7z4,8575
|
|
11
11
|
PyPDFForm/watermark.py,sha256=Ni6Y2-DSaAaxqXtCSTrmDOMO0XW7-u3Hucr6J4njtG8,12475
|
|
12
|
-
PyPDFForm/wrapper.py,sha256
|
|
12
|
+
PyPDFForm/wrapper.py,sha256=-Yp8mnehn2Ho-5O5v7cojHcoBotjeWhi_qM9NAIpTDk,25544
|
|
13
13
|
PyPDFForm/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
14
|
PyPDFForm/middleware/base.py,sha256=d4z7M7pm80176cC4H85m3ZRWzAu_Fm1HkwQkmSSi-WE,2832
|
|
15
15
|
PyPDFForm/middleware/checkbox.py,sha256=gRGhFySPoIpKBseoiOTS3WggoBBik12dXbZ-LJKzIwM,2611
|
|
@@ -27,8 +27,8 @@ PyPDFForm/widgets/image.py,sha256=6y8Ysmk49USr_qWOXD6KGL6cch516cUIlrxoj0pJy9Q,79
|
|
|
27
27
|
PyPDFForm/widgets/radio.py,sha256=ipadJyHbgftDUvjGk15kapzgHPN3HjdF_iB_7amXR6o,2737
|
|
28
28
|
PyPDFForm/widgets/signature.py,sha256=EndajR-SQWDZyVfbvDoz5Bjuer5KbURjFlRGqxeXYeY,5115
|
|
29
29
|
PyPDFForm/widgets/text.py,sha256=HP2cPEUAzK5QL3kDfMz7gQcC3svCpmYuyFItBjlrBpI,1233
|
|
30
|
-
pypdfform-2.2.
|
|
31
|
-
pypdfform-2.2.
|
|
32
|
-
pypdfform-2.2.
|
|
33
|
-
pypdfform-2.2.
|
|
34
|
-
pypdfform-2.2.
|
|
30
|
+
pypdfform-2.2.7.dist-info/licenses/LICENSE,sha256=43awmYkI6opyTpg19me731iO1WfXZwViqb67oWtCsFY,1065
|
|
31
|
+
pypdfform-2.2.7.dist-info/METADATA,sha256=AGsBkSQv4d11UOfNlrnDn8oHBU8KouKIjgJQSTlZiyM,5605
|
|
32
|
+
pypdfform-2.2.7.dist-info/WHEEL,sha256=0CuiUZ_p9E4cD6NyLD6UG80LBXYyiSYZOKDm5lp32xk,91
|
|
33
|
+
pypdfform-2.2.7.dist-info/top_level.txt,sha256=GQQKuWqPUjT9YZqwK95NlAQzxjwoQrsxQ8ureM8lWOY,10
|
|
34
|
+
pypdfform-2.2.7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|