PyPDFForm 1.3.2__py3-none-any.whl → 1.3.3__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/core/constants.py +4 -0
- PyPDFForm/core/font.py +41 -0
- PyPDFForm/core/font_size.py +2 -2
- PyPDFForm/core/template.py +6 -0
- PyPDFForm/core/utils.py +20 -2
- PyPDFForm/middleware/checkbox.py +6 -0
- PyPDFForm/middleware/constants.py +0 -4
- PyPDFForm/middleware/dropdown.py +6 -0
- PyPDFForm/middleware/element.py +7 -1
- PyPDFForm/middleware/radio.py +6 -0
- PyPDFForm/middleware/template.py +0 -2
- PyPDFForm/middleware/text.py +7 -0
- PyPDFForm/wrapper.py +27 -4
- {PyPDFForm-1.3.2.dist-info → PyPDFForm-1.3.3.dist-info}/METADATA +2 -6
- PyPDFForm-1.3.3.dist-info/RECORD +26 -0
- PyPDFForm-1.3.2.dist-info/RECORD +0 -26
- {PyPDFForm-1.3.2.dist-info → PyPDFForm-1.3.3.dist-info}/LICENSE +0 -0
- {PyPDFForm-1.3.2.dist-info → PyPDFForm-1.3.3.dist-info}/WHEEL +0 -0
- {PyPDFForm-1.3.2.dist-info → PyPDFForm-1.3.3.dist-info}/top_level.txt +0 -0
PyPDFForm/__init__.py
CHANGED
PyPDFForm/core/constants.py
CHANGED
|
@@ -19,6 +19,10 @@ CHOICES_IDENTIFIER = "/Opt"
|
|
|
19
19
|
|
|
20
20
|
FONT_SIZE_IDENTIFIER = "Tf"
|
|
21
21
|
FONT_COLOR_IDENTIFIER = " rg"
|
|
22
|
+
DEFAULT_FONT = "Helvetica"
|
|
23
|
+
DEFAULT_FONT_SIZE = 12
|
|
24
|
+
DEFAULT_FONT_COLOR = (0, 0, 0)
|
|
25
|
+
PREVIEW_FONT_COLOR = (1, 0, 0)
|
|
22
26
|
|
|
23
27
|
CHECKBOX_TO_DRAW = "\u2713"
|
|
24
28
|
RADIO_TO_DRAW = "\u25CF"
|
PyPDFForm/core/font.py
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""Contains helpers for font."""
|
|
3
3
|
|
|
4
|
+
import re
|
|
4
5
|
from io import BytesIO
|
|
5
6
|
|
|
7
|
+
import pdfrw
|
|
6
8
|
from reportlab.pdfbase import pdfmetrics
|
|
7
9
|
from reportlab.pdfbase.ttfonts import TTFError, TTFont
|
|
8
10
|
|
|
11
|
+
from . import constants
|
|
12
|
+
from .patterns import TEXT_FIELD_APPEARANCE_PATTERNS
|
|
13
|
+
from .template import traverse_pattern
|
|
14
|
+
|
|
9
15
|
|
|
10
16
|
def register_font(font_name: str, ttf_stream: bytes) -> bool:
|
|
11
17
|
"""Registers a font from a ttf file stream."""
|
|
@@ -22,3 +28,38 @@ def register_font(font_name: str, ttf_stream: bytes) -> bool:
|
|
|
22
28
|
|
|
23
29
|
buff.close()
|
|
24
30
|
return result
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def auto_detect_font(element: pdfrw.PdfDict) -> str:
|
|
34
|
+
"""Returns the font of the text field if it is one of the standard fonts."""
|
|
35
|
+
|
|
36
|
+
result = constants.DEFAULT_FONT
|
|
37
|
+
|
|
38
|
+
for pattern in TEXT_FIELD_APPEARANCE_PATTERNS:
|
|
39
|
+
text_appearance = traverse_pattern(pattern, element)
|
|
40
|
+
|
|
41
|
+
if text_appearance:
|
|
42
|
+
text_appearance = (
|
|
43
|
+
text_appearance.replace("(", "").replace(")", "").split(" ")
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
for each in text_appearance:
|
|
47
|
+
if each.startswith("/"):
|
|
48
|
+
text_segments = re.findall("[A-Z][^A-Z]*", each.replace("/", ""))
|
|
49
|
+
|
|
50
|
+
for font in pdfmetrics.standardFonts:
|
|
51
|
+
font_segments = re.findall(
|
|
52
|
+
"[A-Z][^A-Z]*", font.replace("-", "")
|
|
53
|
+
)
|
|
54
|
+
if len(font_segments) != len(text_segments):
|
|
55
|
+
continue
|
|
56
|
+
|
|
57
|
+
found = True
|
|
58
|
+
for i, val in enumerate(font_segments):
|
|
59
|
+
if not val.startswith(text_segments[i]):
|
|
60
|
+
found = False
|
|
61
|
+
|
|
62
|
+
if found:
|
|
63
|
+
return font
|
|
64
|
+
|
|
65
|
+
return result
|
PyPDFForm/core/font_size.py
CHANGED
|
@@ -6,8 +6,8 @@ from typing import Union
|
|
|
6
6
|
|
|
7
7
|
import pdfrw
|
|
8
8
|
|
|
9
|
-
from ..middleware.constants import GLOBAL_FONT_SIZE
|
|
10
9
|
from . import constants, template
|
|
10
|
+
from .constants import DEFAULT_FONT_SIZE
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
def text_field_font_size(element: pdfrw.PdfDict) -> Union[float, int]:
|
|
@@ -17,7 +17,7 @@ def text_field_font_size(element: pdfrw.PdfDict) -> Union[float, int]:
|
|
|
17
17
|
"""
|
|
18
18
|
|
|
19
19
|
if template.is_text_multiline(element):
|
|
20
|
-
return
|
|
20
|
+
return DEFAULT_FONT_SIZE
|
|
21
21
|
|
|
22
22
|
height = abs(
|
|
23
23
|
float(element[constants.ANNOTATION_RECTANGLE_KEY][1])
|
PyPDFForm/core/template.py
CHANGED
|
@@ -276,6 +276,12 @@ def get_draw_text_coordinates(
|
|
|
276
276
|
) -> Tuple[Union[float, int], Union[float, int]]:
|
|
277
277
|
"""Returns coordinates to draw text at given a PDF form text element."""
|
|
278
278
|
|
|
279
|
+
if element_middleware.preview:
|
|
280
|
+
return (
|
|
281
|
+
float(element[constants.ANNOTATION_RECTANGLE_KEY][0]),
|
|
282
|
+
float(element[constants.ANNOTATION_RECTANGLE_KEY][3]) + 5,
|
|
283
|
+
)
|
|
284
|
+
|
|
279
285
|
element_value = element_middleware.value or ""
|
|
280
286
|
length = (
|
|
281
287
|
min(len(element_value), element_middleware.max_length)
|
PyPDFForm/core/utils.py
CHANGED
|
@@ -12,6 +12,7 @@ from ..middleware.constants import ELEMENT_TYPES
|
|
|
12
12
|
from ..middleware.radio import Radio
|
|
13
13
|
from ..middleware.text import Text
|
|
14
14
|
from . import constants
|
|
15
|
+
from . import font as font_core
|
|
15
16
|
from . import font_size as font_size_core
|
|
16
17
|
from . import template
|
|
17
18
|
|
|
@@ -43,6 +44,8 @@ def update_text_field_attributes(
|
|
|
43
44
|
key = template.get_element_key(_element)
|
|
44
45
|
|
|
45
46
|
if isinstance(elements[key], Text):
|
|
47
|
+
if elements[key].font is None:
|
|
48
|
+
elements[key].font = font_core.auto_detect_font(_element)
|
|
46
49
|
if elements[key].font_size is None:
|
|
47
50
|
elements[key].font_size = template.get_text_field_font_size(
|
|
48
51
|
_element
|
|
@@ -139,9 +142,9 @@ def checkbox_radio_to_draw(
|
|
|
139
142
|
element_name=element.name,
|
|
140
143
|
element_value="",
|
|
141
144
|
)
|
|
142
|
-
new_element.font =
|
|
145
|
+
new_element.font = constants.DEFAULT_FONT
|
|
143
146
|
new_element.font_size = font_size
|
|
144
|
-
new_element.font_color =
|
|
147
|
+
new_element.font_color = constants.DEFAULT_FONT_COLOR
|
|
145
148
|
|
|
146
149
|
if isinstance(element, Checkbox):
|
|
147
150
|
new_element.value = constants.CHECKBOX_TO_DRAW
|
|
@@ -151,6 +154,21 @@ def checkbox_radio_to_draw(
|
|
|
151
154
|
return new_element
|
|
152
155
|
|
|
153
156
|
|
|
157
|
+
def preview_element_to_draw(element: ELEMENT_TYPES) -> Text:
|
|
158
|
+
"""Converts an element to a preview text element."""
|
|
159
|
+
|
|
160
|
+
new_element = Text(
|
|
161
|
+
element_name=element.name,
|
|
162
|
+
element_value="{" + f" {element.name} " + "}",
|
|
163
|
+
)
|
|
164
|
+
new_element.font = constants.DEFAULT_FONT
|
|
165
|
+
new_element.font_size = constants.DEFAULT_FONT_SIZE
|
|
166
|
+
new_element.font_color = constants.PREVIEW_FONT_COLOR
|
|
167
|
+
new_element.preview = True
|
|
168
|
+
|
|
169
|
+
return new_element
|
|
170
|
+
|
|
171
|
+
|
|
154
172
|
def remove_all_elements(pdf: bytes) -> bytes:
|
|
155
173
|
"""Removes all elements from a pdfrw parsed PDF form."""
|
|
156
174
|
|
PyPDFForm/middleware/checkbox.py
CHANGED
PyPDFForm/middleware/dropdown.py
CHANGED
PyPDFForm/middleware/element.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""Contains element middleware."""
|
|
3
3
|
|
|
4
|
-
from typing import Union
|
|
4
|
+
from typing import Any, Union
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
class Element:
|
|
@@ -28,3 +28,9 @@ class Element:
|
|
|
28
28
|
"""Json schema definition of the element."""
|
|
29
29
|
|
|
30
30
|
raise NotImplementedError
|
|
31
|
+
|
|
32
|
+
@property
|
|
33
|
+
def sample_value(self) -> Any:
|
|
34
|
+
"""Sample value of the element."""
|
|
35
|
+
|
|
36
|
+
raise NotImplementedError
|
PyPDFForm/middleware/radio.py
CHANGED
PyPDFForm/middleware/template.py
CHANGED
PyPDFForm/middleware/text.py
CHANGED
|
@@ -25,6 +25,7 @@ class Text(Element):
|
|
|
25
25
|
self.character_paddings = None
|
|
26
26
|
self.text_lines = None
|
|
27
27
|
self.text_line_x_coordinates = None
|
|
28
|
+
self.preview = False
|
|
28
29
|
|
|
29
30
|
@property
|
|
30
31
|
def schema_definition(self) -> dict:
|
|
@@ -36,3 +37,9 @@ class Text(Element):
|
|
|
36
37
|
result["maxLength"] = self.max_length
|
|
37
38
|
|
|
38
39
|
return result
|
|
40
|
+
|
|
41
|
+
@property
|
|
42
|
+
def sample_value(self) -> str:
|
|
43
|
+
"""Sample value of the text field."""
|
|
44
|
+
|
|
45
|
+
return self.name
|
PyPDFForm/wrapper.py
CHANGED
|
@@ -5,6 +5,7 @@ from __future__ import annotations
|
|
|
5
5
|
|
|
6
6
|
from typing import BinaryIO, Dict, Union
|
|
7
7
|
|
|
8
|
+
from .core import constants as core_constants
|
|
8
9
|
from .core import filler, font
|
|
9
10
|
from .core import image as image_core
|
|
10
11
|
from .core import utils
|
|
@@ -32,7 +33,7 @@ class Wrapper:
|
|
|
32
33
|
|
|
33
34
|
for each in self.elements.values():
|
|
34
35
|
if isinstance(each, Text):
|
|
35
|
-
each.font = kwargs.get("global_font"
|
|
36
|
+
each.font = kwargs.get("global_font")
|
|
36
37
|
each.font_size = kwargs.get("global_font_size")
|
|
37
38
|
each.font_color = kwargs.get("global_font_color")
|
|
38
39
|
|
|
@@ -41,6 +42,12 @@ class Wrapper:
|
|
|
41
42
|
|
|
42
43
|
return self.stream
|
|
43
44
|
|
|
45
|
+
@property
|
|
46
|
+
def sample_data(self) -> dict:
|
|
47
|
+
"""Returns a valid sample data that can be filled into the PDF form."""
|
|
48
|
+
|
|
49
|
+
return {key: value.sample_value for key, value in self.elements.items()}
|
|
50
|
+
|
|
44
51
|
@property
|
|
45
52
|
def version(self) -> Union[str, None]:
|
|
46
53
|
"""Gets the version of the PDF."""
|
|
@@ -76,6 +83,18 @@ class Wrapper:
|
|
|
76
83
|
|
|
77
84
|
return new_obj
|
|
78
85
|
|
|
86
|
+
@property
|
|
87
|
+
def preview(self) -> bytes:
|
|
88
|
+
"""Inspects all supported elements' names for the PDF form."""
|
|
89
|
+
|
|
90
|
+
return filler.fill(
|
|
91
|
+
self.stream,
|
|
92
|
+
{
|
|
93
|
+
key: utils.preview_element_to_draw(value)
|
|
94
|
+
for key, value in self.elements.items()
|
|
95
|
+
},
|
|
96
|
+
)
|
|
97
|
+
|
|
79
98
|
def fill(
|
|
80
99
|
self,
|
|
81
100
|
data: Dict[str, Union[str, bool, int]],
|
|
@@ -112,9 +131,13 @@ class Wrapper:
|
|
|
112
131
|
|
|
113
132
|
new_element = Text("new")
|
|
114
133
|
new_element.value = text
|
|
115
|
-
new_element.font = kwargs.get("font",
|
|
116
|
-
new_element.font_size = kwargs.get(
|
|
117
|
-
|
|
134
|
+
new_element.font = kwargs.get("font", core_constants.DEFAULT_FONT)
|
|
135
|
+
new_element.font_size = kwargs.get(
|
|
136
|
+
"font_size", core_constants.DEFAULT_FONT_SIZE
|
|
137
|
+
)
|
|
138
|
+
new_element.font_color = kwargs.get(
|
|
139
|
+
"font_color", core_constants.DEFAULT_FONT_COLOR
|
|
140
|
+
)
|
|
118
141
|
|
|
119
142
|
watermarks = watermark_core.create_watermarks_and_draw(
|
|
120
143
|
self.stream,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: PyPDFForm
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.3
|
|
4
4
|
Summary: The Python library for PDF forms.
|
|
5
5
|
Home-page: https://github.com/chinapandaman/PyPDFForm
|
|
6
6
|
Author: Jinge Li
|
|
@@ -84,10 +84,6 @@ and it should look like [this](https://github.com/chinapandaman/PyPDFForm/raw/ma
|
|
|
84
84
|
|
|
85
85
|
## How to Contribute
|
|
86
86
|
|
|
87
|
-
If you wish to improve this library, there is one specific way you can contribute
|
|
88
|
-
on top of the usual open source project norms such as issues and pull requests.
|
|
89
|
-
|
|
90
87
|
It is difficult to make sure that the library supports all the PDF form creating tools out
|
|
91
|
-
there. So if you run into a case where the library does not work for certain PDF forms created by
|
|
92
|
-
certain tools, feel free to open an issue with the problematic PDF form attached. I will seek
|
|
88
|
+
there. So if you run into a case where the library does not work for certain PDF forms created by certain tools, feel free to open an issue with the problematic PDF form attached. I will seek
|
|
93
89
|
to make the library support the attached PDF form as well as the tool used to create it.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
PyPDFForm/__init__.py,sha256=ecXWLEcE7Yxn6rn5RQn17cDB5V7JsbhX1zFWAPFPfJs,122
|
|
2
|
+
PyPDFForm/wrapper.py,sha256=jBAzndmoIX1-dHr7hnnIBMpuGqNNKQvC40yd2mdgyVI,6052
|
|
3
|
+
PyPDFForm/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
+
PyPDFForm/core/constants.py,sha256=6q06MVJ_-u60MN3F7pp_uYDIZY1V7GQi7WR5PaX8Q5Q,752
|
|
5
|
+
PyPDFForm/core/filler.py,sha256=XK_g6hHEMHUt99S0Fj_M85x_ChFptlYfYxvUeuGpviQ,2701
|
|
6
|
+
PyPDFForm/core/font.py,sha256=RLiIC7nv5XaIC92fMfVcozrocCFFJ_IQWboLoNRG60E,1909
|
|
7
|
+
PyPDFForm/core/font_size.py,sha256=Ussv1Ah-4qB-5PryJf7hy2UFszllJWlVP7iEYTfmvqQ,1153
|
|
8
|
+
PyPDFForm/core/image.py,sha256=pwsGMGjvtmxRInF6H-LgGMJosJnZ0uPKS1LU59aeKms,1070
|
|
9
|
+
PyPDFForm/core/patterns.py,sha256=AzYvpNppIGOBUXzZw2LCS8XBJ8F8GOmlBTFBY_OQej4,2402
|
|
10
|
+
PyPDFForm/core/template.py,sha256=7SXXQ5_E4HzGCc3J0AikzsB20lEjgJkaAoMRFbEZN8E,12701
|
|
11
|
+
PyPDFForm/core/utils.py,sha256=sMs_rxhrq4N3uTce5bPyKu2wEr-5hwvTDz-EFQ-sNBE,6062
|
|
12
|
+
PyPDFForm/core/watermark.py,sha256=WAl1idxWbeMwHA1AxdsbLHEPCbniSHD4gGFXf4zlHl8,4242
|
|
13
|
+
PyPDFForm/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
|
+
PyPDFForm/middleware/adapter.py,sha256=jen3jzgik_hwrM7lG1GdVi0CSzELaePv9UzRb0VIRPU,876
|
|
15
|
+
PyPDFForm/middleware/checkbox.py,sha256=fU_VV6B6m7aYe3i6HzXBUu9U9yH5gP0WXz1J9q4c0Fs,654
|
|
16
|
+
PyPDFForm/middleware/constants.py,sha256=r56j2oURQei7KX0gWPqb10bQXRVdyVd0T8BapSlDlYM,481
|
|
17
|
+
PyPDFForm/middleware/dropdown.py,sha256=OJQI_XffMPf4yxUCk5WOaLIqZpRd97gNV-YG-llFaa8,712
|
|
18
|
+
PyPDFForm/middleware/element.py,sha256=Xo_lFRCTkEorfYOSU7RcP7tmvCrkKEpiZAzKIPHRwVs,787
|
|
19
|
+
PyPDFForm/middleware/radio.py,sha256=gwNTE__eiaSqxY8_ov__tI8byz-cKOfTp9nWJ5DkFzQ,730
|
|
20
|
+
PyPDFForm/middleware/template.py,sha256=Dv0I70DQIsejnVZlrrebY8W8YHsMLDd8kxUIeXKkdGM,2354
|
|
21
|
+
PyPDFForm/middleware/text.py,sha256=rrTfXcxaXZlLsjuJ1C4KaHt_reZk2c9MQ-z0ec3OD9g,1095
|
|
22
|
+
PyPDFForm-1.3.3.dist-info/LICENSE,sha256=43awmYkI6opyTpg19me731iO1WfXZwViqb67oWtCsFY,1065
|
|
23
|
+
PyPDFForm-1.3.3.dist-info/METADATA,sha256=2D-gpDc8csDOBEAaO_62857YVXYwtVbWysm9lzoScIg,3985
|
|
24
|
+
PyPDFForm-1.3.3.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
|
|
25
|
+
PyPDFForm-1.3.3.dist-info/top_level.txt,sha256=GQQKuWqPUjT9YZqwK95NlAQzxjwoQrsxQ8ureM8lWOY,10
|
|
26
|
+
PyPDFForm-1.3.3.dist-info/RECORD,,
|
PyPDFForm-1.3.2.dist-info/RECORD
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
PyPDFForm/__init__.py,sha256=BZbzO42ZvLW8EDuFoc6JAxeBTJdrLyFxb8Rea9uQWPQ,122
|
|
2
|
-
PyPDFForm/wrapper.py,sha256=zHANXfFtgfpH_5HfBqhvIvpHbKHoMKcMF8irQ1UVLBQ,5430
|
|
3
|
-
PyPDFForm/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
-
PyPDFForm/core/constants.py,sha256=vuYn1KRIku7Iz8FrXRh1Nd52rgdyhMgCg-QWtGy92BM,640
|
|
5
|
-
PyPDFForm/core/filler.py,sha256=XK_g6hHEMHUt99S0Fj_M85x_ChFptlYfYxvUeuGpviQ,2701
|
|
6
|
-
PyPDFForm/core/font.py,sha256=9hbKyyz4QE1nwadUTtJgEBetfFW-8qwGLVaVDDOqbMI,542
|
|
7
|
-
PyPDFForm/core/font_size.py,sha256=waJqMC2SHnexYfEEBhpDeapzBcpddIYp6tNkMaHH36Q,1163
|
|
8
|
-
PyPDFForm/core/image.py,sha256=pwsGMGjvtmxRInF6H-LgGMJosJnZ0uPKS1LU59aeKms,1070
|
|
9
|
-
PyPDFForm/core/patterns.py,sha256=AzYvpNppIGOBUXzZw2LCS8XBJ8F8GOmlBTFBY_OQej4,2402
|
|
10
|
-
PyPDFForm/core/template.py,sha256=RYkkMoQtAdnWHUTpd9XjT5MgLfNamh5iO5yH0UiYheA,12500
|
|
11
|
-
PyPDFForm/core/utils.py,sha256=ocHIntevRghxRVRbuKAL8uaxsXpkNXaFIq3bdCXGMG0,5419
|
|
12
|
-
PyPDFForm/core/watermark.py,sha256=WAl1idxWbeMwHA1AxdsbLHEPCbniSHD4gGFXf4zlHl8,4242
|
|
13
|
-
PyPDFForm/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
|
-
PyPDFForm/middleware/adapter.py,sha256=jen3jzgik_hwrM7lG1GdVi0CSzELaePv9UzRb0VIRPU,876
|
|
15
|
-
PyPDFForm/middleware/checkbox.py,sha256=DX4yTNP5u-jRoe5GdGbVwfIGBXc84J5H0bvKW7VIdJk,538
|
|
16
|
-
PyPDFForm/middleware/constants.py,sha256=qGFhOuToiscSFpPoVXnpfRkuo-flPpFKRa4yExAu5ZI,560
|
|
17
|
-
PyPDFForm/middleware/dropdown.py,sha256=ZlS6X0Fq_Tqox3DuxGk4qQujrF1wXDFkWdYpMmQ2Nco,600
|
|
18
|
-
PyPDFForm/middleware/element.py,sha256=prjp8rg_F4DRnHRsSIki0yLMw3OHZuSIgkbocVSlPKE,654
|
|
19
|
-
PyPDFForm/middleware/radio.py,sha256=-1RiAmzui6yPUgUYowRw_gaEN1e2XPFgqfbF9GVanrI,615
|
|
20
|
-
PyPDFForm/middleware/template.py,sha256=5o6Vu5kx-UZbT1L_2fx9jZiIIIzh6cScp53mBR_Jm8E,2395
|
|
21
|
-
PyPDFForm/middleware/text.py,sha256=jGW9M4QwWuSUBvOUgs2BoSYzp91F0tUg3_2uNmXPevY,944
|
|
22
|
-
PyPDFForm-1.3.2.dist-info/LICENSE,sha256=43awmYkI6opyTpg19me731iO1WfXZwViqb67oWtCsFY,1065
|
|
23
|
-
PyPDFForm-1.3.2.dist-info/METADATA,sha256=nvY2oLmMPGXjpDM2qj91vW1JOg8ij33Y-9VkaAOUAo4,4150
|
|
24
|
-
PyPDFForm-1.3.2.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
|
|
25
|
-
PyPDFForm-1.3.2.dist-info/top_level.txt,sha256=GQQKuWqPUjT9YZqwK95NlAQzxjwoQrsxQ8ureM8lWOY,10
|
|
26
|
-
PyPDFForm-1.3.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|