convert-stream 1.2__tar.gz → 1.2.3__tar.gz
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 convert-stream might be problematic. Click here for more details.
- {convert_stream-1.2 → convert_stream-1.2.3}/PKG-INFO +2 -2
- {convert_stream-1.2 → convert_stream-1.2.3}/convert_stream/__init__.py +10 -5
- {convert_stream-1.2 → convert_stream-1.2.3}/convert_stream/__main__.py +16 -4
- {convert_stream-1.2 → convert_stream-1.2.3}/convert_stream/_version.py +3 -3
- {convert_stream-1.2 → convert_stream-1.2.3}/convert_stream/convert.py +133 -66
- convert_stream-1.2.3/convert_stream/image_to_pdf.py +218 -0
- {convert_stream-1.2 → convert_stream-1.2.3}/convert_stream/imagelib.py +100 -60
- {convert_stream-1.2 → convert_stream-1.2.3}/convert_stream/models/m_text.py +2 -2
- {convert_stream-1.2 → convert_stream-1.2.3}/convert_stream/models/models_image.py +6 -8
- {convert_stream-1.2 → convert_stream-1.2.3}/convert_stream/models/models_pdf.py +114 -108
- convert_stream-1.2.3/convert_stream/pdf_compress.py +136 -0
- {convert_stream-1.2 → convert_stream-1.2.3}/convert_stream/pdf_document.py +56 -20
- {convert_stream-1.2 → convert_stream-1.2.3}/convert_stream/pdf_page.py +74 -57
- convert_stream-1.2.3/convert_stream/pdf_to_images.py +133 -0
- convert_stream-1.2.3/convert_stream/progress/__init__.py +0 -0
- {convert_stream-1.2/convert_stream/models → convert_stream-1.2.3/convert_stream/progress}/progress_bar.py +8 -7
- {convert_stream-1.2 → convert_stream-1.2.3}/convert_stream.egg-info/PKG-INFO +2 -2
- {convert_stream-1.2 → convert_stream-1.2.3}/convert_stream.egg-info/SOURCES.txt +5 -2
- {convert_stream-1.2 → convert_stream-1.2.3}/convert_stream.egg-info/requires.txt +1 -1
- {convert_stream-1.2 → convert_stream-1.2.3}/pyproject.toml +8 -3
- convert_stream-1.2/convert_stream/pdf_convert.py +0 -294
- {convert_stream-1.2 → convert_stream-1.2.3}/README.md +0 -0
- {convert_stream-1.2 → convert_stream-1.2.3}/convert_stream/models/__init__.py +0 -0
- {convert_stream-1.2 → convert_stream-1.2.3}/convert_stream/text.py +0 -0
- {convert_stream-1.2 → convert_stream-1.2.3}/convert_stream.egg-info/dependency_links.txt +0 -0
- {convert_stream-1.2 → convert_stream-1.2.3}/convert_stream.egg-info/top_level.txt +0 -0
- {convert_stream-1.2 → convert_stream-1.2.3}/setup.cfg +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: convert_stream
|
|
3
|
-
Version: 1.2
|
|
3
|
+
Version: 1.2.3
|
|
4
4
|
Summary: Manipulação de documentos PDF e Imagens. Converter, Ler, rotacionar exportar etc.
|
|
5
5
|
Author: Bruno Chaves
|
|
6
6
|
Requires-Python: >=3.11
|
|
7
7
|
Description-Content-Type: text/markdown
|
|
8
|
-
Requires-Dist: soup_files
|
|
8
|
+
Requires-Dist: soup_files
|
|
9
9
|
Requires-Dist: PyPDF2==3.0.1
|
|
10
10
|
Requires-Dist: PyMuPDF==1.25.5
|
|
11
11
|
Requires-Dist: reportlab==4.3.1
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
#
|
|
3
3
|
from ._version import (
|
|
4
4
|
__version__, __module_name__,
|
|
5
|
-
__author__, __license__,
|
|
5
|
+
__author__, __license__,
|
|
6
|
+
__modify_date__
|
|
6
7
|
)
|
|
7
8
|
version = __version__
|
|
8
9
|
|
|
@@ -11,13 +12,17 @@ from .text import (
|
|
|
11
12
|
LibraryDates, print_title, print_line, save_data
|
|
12
13
|
)
|
|
13
14
|
|
|
14
|
-
from .
|
|
15
|
-
ProgressBarAdapter, ProgressBarSimple,
|
|
15
|
+
from convert_stream.progress.progress_bar import (
|
|
16
|
+
ProgressBarAdapter, ProgressBarSimple,
|
|
17
|
+
ProgressBarTqdm, ABCProgressBar
|
|
16
18
|
)
|
|
19
|
+
|
|
17
20
|
from .models.models_pdf import LibraryPDF
|
|
18
21
|
from .imagelib import ImageObject, ImageInverColor, LibraryImage
|
|
19
22
|
from .pdf_page import PageDocumentPdf, PagePdfFitz, PagePyPdf2
|
|
20
|
-
from .pdf_document import DocumentPdf
|
|
21
|
-
from .
|
|
23
|
+
from .pdf_document import DocumentPdf, FileDocumentPdf
|
|
24
|
+
from .pdf_to_images import ConvertPdfToImage
|
|
25
|
+
from .image_to_pdf import ImageConvertPdf
|
|
22
26
|
from .convert import PdfStream, ImageStream, get_data_from_pdfs
|
|
27
|
+
from .pdf_compress import CompressDocument
|
|
23
28
|
|
|
@@ -11,7 +11,9 @@
|
|
|
11
11
|
+ Incluir o método set_rotation() em ImageObject()
|
|
12
12
|
|
|
13
13
|
"""
|
|
14
|
-
import
|
|
14
|
+
import os
|
|
15
|
+
import sys
|
|
16
|
+
|
|
15
17
|
this_file = os.path.abspath(os.path.relpath(__file__))
|
|
16
18
|
dir_of_project = os.path.dirname(this_file)
|
|
17
19
|
sys.path.insert(0, dir_of_project)
|
|
@@ -22,13 +24,23 @@ from convert_stream import (
|
|
|
22
24
|
|
|
23
25
|
|
|
24
26
|
def test():
|
|
25
|
-
from convert_stream import
|
|
26
|
-
|
|
27
|
+
from convert_stream import (
|
|
28
|
+
FileDocumentPdf, CompressDocument, DocumentPdf, LibraryPDF,
|
|
29
|
+
PdfStream, ImageStream, PageDocumentPdf,
|
|
30
|
+
)
|
|
31
|
+
from soup_files import (
|
|
32
|
+
Directory, File, UserFileSystem, InputFiles
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
outdir: Directory = UserFileSystem().userDownloads.concat('output', create=True)
|
|
36
|
+
indir: Directory = UserFileSystem().userDownloads.concat('TESTE-PDF', create=True)
|
|
37
|
+
base = indir.join_file('base.pdf')
|
|
27
38
|
|
|
28
39
|
|
|
29
40
|
def main():
|
|
30
41
|
print_title(f'{__module_name__} versão {version} - {__modify_date__}', char='-')
|
|
31
42
|
test()
|
|
32
43
|
|
|
44
|
+
|
|
33
45
|
if __name__ == '__main__':
|
|
34
|
-
main()
|
|
46
|
+
main()
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
# -*- coding: utf-8 -*-
|
|
3
|
-
__version__ = '1.2'
|
|
3
|
+
__version__ = '1.2.3'
|
|
4
4
|
__author__ = 'Bruno Chaves'
|
|
5
5
|
__license__ = 'MIT'
|
|
6
|
-
__module_name__ = '
|
|
7
|
-
__modify_date__ = '2025-
|
|
6
|
+
__module_name__ = 'convert_stream'
|
|
7
|
+
__modify_date__ = '2025-06-28'
|
|
@@ -6,47 +6,51 @@ import pandas
|
|
|
6
6
|
|
|
7
7
|
from convert_stream.models import ABCDocumentStream, LibraryImage, LibraryPDF
|
|
8
8
|
from convert_stream.imagelib import ImageObject
|
|
9
|
-
from convert_stream.
|
|
9
|
+
from convert_stream.progress.progress_bar import ProgressBarAdapter, ProgressBarSimple
|
|
10
10
|
from convert_stream.pdf_page import PageDocumentPdf
|
|
11
11
|
from convert_stream.pdf_document import DocumentPdf
|
|
12
|
-
from convert_stream.
|
|
12
|
+
from convert_stream.pdf_to_images import ConvertPdfToImage
|
|
13
|
+
from convert_stream.image_to_pdf import ImageConvertPdf
|
|
13
14
|
from soup_files import File, Directory
|
|
14
15
|
|
|
15
16
|
#==================================================================#
|
|
16
17
|
# PDF
|
|
17
18
|
#==================================================================#
|
|
18
19
|
|
|
20
|
+
|
|
19
21
|
class PdfStream(ABCDocumentStream):
|
|
20
22
|
"""
|
|
21
23
|
Objeto para manipular a exportação de dados PDF
|
|
22
24
|
"""
|
|
23
25
|
|
|
24
26
|
def __init__(
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
self, *,
|
|
28
|
+
library_pdf: LibraryPDF = LibraryPDF.FITZ,
|
|
29
|
+
library_image: LibraryImage = LibraryImage.OPENCV,
|
|
30
|
+
progress_bar: ProgressBarAdapter = ProgressBarAdapter(ProgressBarSimple())
|
|
29
31
|
):
|
|
30
32
|
super().__init__(library_pdf=library_pdf, library_image=library_image, progress_bar=progress_bar)
|
|
31
33
|
self.num_pages: int = 0
|
|
32
34
|
self.library_pdf: LibraryPDF = library_pdf
|
|
33
35
|
self.library_image: LibraryImage = library_image
|
|
34
36
|
self.document: DocumentPdf = DocumentPdf(self.library_pdf, progress_bar=progress_bar)
|
|
35
|
-
self.
|
|
37
|
+
self.convert_pdf_to_images: ConvertPdfToImage = ConvertPdfToImage(
|
|
38
|
+
library_image=library_image, progress_bar=progress_bar
|
|
39
|
+
)
|
|
36
40
|
|
|
37
41
|
if self.library_pdf == LibraryPDF.CANVAS:
|
|
38
|
-
self.
|
|
42
|
+
self.convert_images_to_pdf: ImageConvertPdf = ImageConvertPdf.create_from_canvas(self.library_image)
|
|
39
43
|
elif self.library_pdf == LibraryPDF.PILPDF:
|
|
40
|
-
self.
|
|
44
|
+
self.convert_images_to_pdf: ImageConvertPdf = ImageConvertPdf.create_from_pil(LibraryImage.PIL)
|
|
41
45
|
else:
|
|
42
|
-
self.
|
|
46
|
+
self.convert_images_to_pdf: ImageConvertPdf = ImageConvertPdf.create_from_fitz(self.library_image)
|
|
43
47
|
|
|
44
48
|
@property
|
|
45
49
|
def num_pages(self) -> int:
|
|
46
50
|
return self.document.num_pages
|
|
47
51
|
|
|
48
52
|
@num_pages.setter
|
|
49
|
-
def num_pages(self, num:int):
|
|
53
|
+
def num_pages(self, num: int):
|
|
50
54
|
pass
|
|
51
55
|
|
|
52
56
|
@property
|
|
@@ -54,7 +58,7 @@ class PdfStream(ABCDocumentStream):
|
|
|
54
58
|
return self.document.pages
|
|
55
59
|
|
|
56
60
|
@pages.setter
|
|
57
|
-
def pages(self, new:List[PageDocumentPdf]):
|
|
61
|
+
def pages(self, new: List[PageDocumentPdf]):
|
|
58
62
|
if not isinstance(new, list):
|
|
59
63
|
return
|
|
60
64
|
self.document.clear()
|
|
@@ -67,7 +71,7 @@ class PdfStream(ABCDocumentStream):
|
|
|
67
71
|
def clear(self):
|
|
68
72
|
self.document.clear()
|
|
69
73
|
|
|
70
|
-
def add_page(self, p:PageDocumentPdf):
|
|
74
|
+
def add_page(self, p: PageDocumentPdf):
|
|
71
75
|
if not isinstance(p, PageDocumentPdf):
|
|
72
76
|
return
|
|
73
77
|
self.document.add_page(p)
|
|
@@ -77,12 +81,14 @@ class PdfStream(ABCDocumentStream):
|
|
|
77
81
|
print(f'{__class__.__name__} Erro: Use lista de PageDocumentPdf, não {type(pages)}')
|
|
78
82
|
return
|
|
79
83
|
max_num: int = len(pages)
|
|
84
|
+
self.progress_bar.start()
|
|
80
85
|
for num, p in enumerate(pages):
|
|
81
86
|
self.progress_bar.update(
|
|
82
87
|
((num+1)/max_num) * 100,
|
|
83
88
|
f'Adicionando página: [{num+1} de {max_num}]'
|
|
84
89
|
)
|
|
85
90
|
self.add_page(p)
|
|
91
|
+
self.progress_bar.stop()
|
|
86
92
|
|
|
87
93
|
def add_page_pdf_bytes(self, bt: bytes):
|
|
88
94
|
_page = PageDocumentPdf.create_from_page_bytes(bt, library=self.library_pdf)
|
|
@@ -101,110 +107,146 @@ class PdfStream(ABCDocumentStream):
|
|
|
101
107
|
self.add_pages(doc.pages)
|
|
102
108
|
|
|
103
109
|
def add_image(self, image: ImageObject):
|
|
104
|
-
pg: PageDocumentPdf = self.
|
|
110
|
+
pg: PageDocumentPdf = self.convert_images_to_pdf.from_image(image)
|
|
105
111
|
self.add_page(pg)
|
|
112
|
+
|
|
113
|
+
def add_images(self, images: List[ImageObject]):
|
|
114
|
+
maxnum: int = len(images)
|
|
115
|
+
self.progress_bar.start()
|
|
116
|
+
for n, img in enumerate(images):
|
|
117
|
+
self.progress_bar.update(
|
|
118
|
+
((n+1)/maxnum) * 100,
|
|
119
|
+
f'Adicionando imagens ao documento: [{n+1}] de {maxnum}'
|
|
120
|
+
)
|
|
121
|
+
self.add_image(img)
|
|
122
|
+
self.progress_bar.stop()
|
|
106
123
|
|
|
107
124
|
def to_file_pdf(self, f: File):
|
|
108
125
|
if self.is_null():
|
|
109
126
|
print(
|
|
110
127
|
f'{__class__.__name__} Nenhuma página foi adiconada, adicione páginas ao documento para prosseguir!'
|
|
111
128
|
)
|
|
112
|
-
docpdf: DocumentPdf = DocumentPdf(
|
|
113
|
-
|
|
129
|
+
docpdf: DocumentPdf = DocumentPdf(
|
|
130
|
+
self.library_pdf, progress_bar=self.progress_bar, pages=self.pages
|
|
131
|
+
)
|
|
114
132
|
docpdf.to_file_pdf(f)
|
|
115
133
|
|
|
116
|
-
def to_files_pdf(self, outdir: Directory, *, prefix='pag'):
|
|
134
|
+
def to_files_pdf(self, outdir: Directory, *, prefix='documento-pag'):
|
|
117
135
|
if self.is_null():
|
|
118
136
|
print(
|
|
119
|
-
f'{__class__.__name__}
|
|
137
|
+
f'{__class__.__name__} Adicione páginas ao documento para prosseguir!'
|
|
120
138
|
)
|
|
121
|
-
|
|
139
|
+
return
|
|
122
140
|
outdir.mkdir()
|
|
123
|
-
_document:DocumentPdf = DocumentPdf(self.library_pdf)
|
|
141
|
+
_document: DocumentPdf = DocumentPdf(self.library_pdf)
|
|
124
142
|
for num, p in enumerate(self.pages):
|
|
125
|
-
filename:str = f'{prefix}-{num+1}.pdf'
|
|
126
|
-
|
|
143
|
+
filename: str = f'{prefix}-{num+1}.pdf'
|
|
144
|
+
self.progress_bar.update_text(
|
|
145
|
+
f'Exportando página: {p.page_number} de {self.num_pages} | [{filename}]'
|
|
146
|
+
)
|
|
127
147
|
_document.add_page(p)
|
|
128
148
|
_document.to_file_pdf(outdir.join_file(filename))
|
|
129
149
|
_document.clear()
|
|
130
150
|
|
|
131
|
-
def to_files_image(self, d:Directory, *, prefix:str='
|
|
151
|
+
def to_files_image(self, d: Directory, *, prefix: str = 'pdf-para-imagem'):
|
|
132
152
|
"""
|
|
133
153
|
Exporta cada página PDF como um arquivo de imagem.
|
|
134
154
|
"""
|
|
135
155
|
d.mkdir()
|
|
136
156
|
for num, page in enumerate(self.pages):
|
|
137
157
|
filename = f'{prefix}-{page.page_number}.png'
|
|
138
|
-
img = self.
|
|
139
|
-
|
|
158
|
+
img = self.convert_pdf_to_images.from_page_pdf(page)
|
|
159
|
+
self.progress_bar.update_text(
|
|
160
|
+
f'Exportando página PDF para imagem: [{num+1} de {self.num_pages}] {filename}'
|
|
161
|
+
)
|
|
140
162
|
img.to_file(d.join_file(filename))
|
|
141
163
|
|
|
142
164
|
def to_images(self) -> List[ImageObject]:
|
|
143
|
-
images_obj:List[ImageObject] = []
|
|
165
|
+
images_obj: List[ImageObject] = []
|
|
144
166
|
for page in self.pages:
|
|
145
|
-
|
|
167
|
+
_image: ImageObject = self.convert_pdf_to_images.from_page_pdf(page)
|
|
168
|
+
images_obj.append(_image)
|
|
146
169
|
return images_obj
|
|
147
170
|
|
|
148
171
|
def to_document(self) -> DocumentPdf:
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
172
|
+
return DocumentPdf(
|
|
173
|
+
self.library_pdf, progress_bar=self.progress_bar, pages=self.pages
|
|
174
|
+
)
|
|
152
175
|
|
|
153
176
|
def inner_images(self) -> List[ImageObject]:
|
|
154
|
-
inner_images:List[ImageObject] = []
|
|
155
|
-
for p in self.pages:
|
|
156
|
-
|
|
157
|
-
|
|
177
|
+
inner_images: List[ImageObject] = []
|
|
178
|
+
for num, p in enumerate(self.pages):
|
|
179
|
+
self.progress_bar.update(
|
|
180
|
+
((num+1)/self.num_pages) * 100,
|
|
181
|
+
f'Convertendo página [{num+1} de {self.num_pages}]'
|
|
158
182
|
)
|
|
183
|
+
imgs: List[ImageObject] = self.convert_pdf_to_images.inner_images(p.to_bytes())
|
|
184
|
+
inner_images.extend(imgs)
|
|
159
185
|
return inner_images
|
|
160
186
|
|
|
161
|
-
def inner_images_to_files(self, d:Directory, prefix:str='página-para-imagens') -> None:
|
|
187
|
+
def inner_images_to_files(self, d: Directory, prefix: str = 'página-para-imagens') -> None:
|
|
162
188
|
"""
|
|
163
|
-
Salva todas as imagens presentes nas páginas em arquivos de imagem.
|
|
189
|
+
Salva todas as imagens presentes nas páginas PDF, em arquivos de imagem.
|
|
164
190
|
"""
|
|
165
|
-
|
|
166
|
-
outdir.mkdir()
|
|
191
|
+
d.mkdir()
|
|
167
192
|
for num, page in enumerate(self.pages):
|
|
168
|
-
images = self.
|
|
193
|
+
images = self.convert_pdf_to_images.inner_images(page.to_bytes())
|
|
169
194
|
if len(images) < 1:
|
|
170
195
|
continue
|
|
171
196
|
for n, img in enumerate(images):
|
|
172
197
|
filename = f'{prefix}-{page.page_number}-img-{n+1}.png'
|
|
173
|
-
img.to_file(
|
|
198
|
+
img.to_file(d.join_file(filename))
|
|
174
199
|
|
|
175
200
|
def set_paisagem(self):
|
|
176
201
|
for page in self.pages:
|
|
177
202
|
page.set_paisagem()
|
|
178
|
-
|
|
203
|
+
|
|
204
|
+
|
|
179
205
|
#==================================================================#
|
|
180
206
|
# Imagens
|
|
181
207
|
#==================================================================#
|
|
182
208
|
|
|
183
209
|
class ImageStream(object):
|
|
184
|
-
def __init__(
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
210
|
+
def __init__(
|
|
211
|
+
self, *,
|
|
212
|
+
library_image: LibraryImage = LibraryImage.OPENCV,
|
|
213
|
+
library_pdf: LibraryPDF = LibraryPDF.PILPDF,
|
|
214
|
+
progress_bar: ProgressBarAdapter = ProgressBarAdapter(ProgressBarSimple()),
|
|
215
|
+
):
|
|
216
|
+
self.__images: List[ImageObject] = []
|
|
217
|
+
self.num_images: int = len(self.__images)
|
|
218
|
+
#self.progress_bar: ProgressBarAdapter = progress_bar
|
|
219
|
+
self.library_image: LibraryImage = library_image
|
|
220
|
+
self.library_pdf: LibraryPDF = library_pdf
|
|
221
|
+
|
|
189
222
|
# Objeto para converter IMAGEM em pdf.
|
|
190
223
|
if library_pdf == LibraryPDF.FITZ:
|
|
191
|
-
self.
|
|
224
|
+
self.convert_image_to_pdf: ImageConvertPdf = ImageConvertPdf.create_from_fitz(library_image)
|
|
192
225
|
elif library_pdf == LibraryPDF.CANVAS:
|
|
193
|
-
self.
|
|
226
|
+
self.convert_image_to_pdf: ImageConvertPdf = ImageConvertPdf.create_from_canvas(library_image)
|
|
194
227
|
elif library_pdf == LibraryPDF.PILPDF:
|
|
195
|
-
self.
|
|
228
|
+
self.convert_image_to_pdf: ImageConvertPdf = ImageConvertPdf.create_from_pil(library_image)
|
|
229
|
+
else:
|
|
230
|
+
raise ValueError(f'PYPDF não pode converter imagens em PDF!!')
|
|
196
231
|
|
|
197
232
|
# Objeto para converter PDF em imagem
|
|
198
|
-
self.
|
|
199
|
-
library_pdf=LibraryPDF.FITZ,
|
|
233
|
+
self.convert_pdf_to_images: ConvertPdfToImage = ConvertPdfToImage(
|
|
234
|
+
library_pdf=LibraryPDF.FITZ,
|
|
235
|
+
library_image=library_image,
|
|
236
|
+
dpi=150,
|
|
237
|
+
progress_bar=progress_bar,
|
|
200
238
|
)
|
|
239
|
+
|
|
240
|
+
@property
|
|
241
|
+
def progress_bar(self) -> ProgressBarAdapter:
|
|
242
|
+
return self.convert_pdf_to_images.pbar
|
|
201
243
|
|
|
202
244
|
@property
|
|
203
245
|
def images(self) -> List[ImageObject]:
|
|
204
246
|
return self.__images
|
|
205
247
|
|
|
206
248
|
@images.setter
|
|
207
|
-
def images(self, imgs:List[ImageObject]) -> None:
|
|
249
|
+
def images(self, imgs: List[ImageObject]) -> None:
|
|
208
250
|
if not isinstance(imgs, list):
|
|
209
251
|
print(f'Erro: Use: list() não {type(imgs)}')
|
|
210
252
|
return
|
|
@@ -212,23 +254,36 @@ class ImageStream(object):
|
|
|
212
254
|
for img in imgs:
|
|
213
255
|
self.add_image(img)
|
|
214
256
|
|
|
215
|
-
def add_image(self, img:ImageObject) -> None:
|
|
257
|
+
def add_image(self, img: ImageObject) -> None:
|
|
216
258
|
if not isinstance(img, ImageObject):
|
|
217
259
|
return
|
|
218
|
-
print(f'{__class__.__name__} Adicionando imagem {self.num_images+1}')
|
|
219
260
|
self.__images.append(img)
|
|
220
261
|
self.num_images += 1
|
|
221
262
|
|
|
222
|
-
def add_images(self, images:List[ImageObject]):
|
|
223
|
-
|
|
263
|
+
def add_images(self, images: List[ImageObject]):
|
|
264
|
+
maxnum: int = len(images)
|
|
265
|
+
self.progress_bar.start()
|
|
266
|
+
for num, i in enumerate(images):
|
|
267
|
+
self.progress_bar.update(
|
|
268
|
+
((num+1)/maxnum) * 100,
|
|
269
|
+
f'Adicionando imagens: [{num+1} de {maxnum}]'
|
|
270
|
+
)
|
|
224
271
|
self.add_image(i)
|
|
272
|
+
self.progress_bar.stop()
|
|
225
273
|
|
|
226
|
-
def add_file_image(self, f:File):
|
|
274
|
+
def add_file_image(self, f: File):
|
|
227
275
|
img = ImageObject.create_from_file(f, library=self.library_image)
|
|
228
276
|
self.add_image(img)
|
|
229
277
|
|
|
230
|
-
def add_files_image(self, files:List[File]):
|
|
231
|
-
|
|
278
|
+
def add_files_image(self, files: List[File]):
|
|
279
|
+
maxnum: int = len(files)
|
|
280
|
+
for num, f in enumerate(files):
|
|
281
|
+
p = ((num + 1) / maxnum) * 100
|
|
282
|
+
#print(p)
|
|
283
|
+
self.progress_bar.update(
|
|
284
|
+
p,
|
|
285
|
+
f'Adicionando arquivos: [{num + 1} de {maxnum}]'
|
|
286
|
+
)
|
|
232
287
|
self.add_file_image(f)
|
|
233
288
|
|
|
234
289
|
def is_null(self) -> bool:
|
|
@@ -240,20 +295,32 @@ class ImageStream(object):
|
|
|
240
295
|
self.__images.clear()
|
|
241
296
|
self.num_images = 0
|
|
242
297
|
|
|
243
|
-
def to_files_image(self, d:Directory, prefix:str='imagem'):
|
|
298
|
+
def to_files_image(self, d: Directory, prefix: str = 'imagem'):
|
|
244
299
|
d.mkdir()
|
|
300
|
+
self.progress_bar.start()
|
|
245
301
|
for num, image in enumerate(self.images):
|
|
246
302
|
filename = f'{prefix}-{num+1}.png'
|
|
247
|
-
|
|
303
|
+
self.progress_bar.update(
|
|
304
|
+
((num+1)/self.num_images) * 100,
|
|
305
|
+
f'Exportando imagem: {num+1} de {self.num_images} [{filename}]'
|
|
306
|
+
)
|
|
248
307
|
image.to_file(d.join_file(filename))
|
|
308
|
+
self.progress_bar.stop()
|
|
249
309
|
|
|
250
310
|
def to_pages_pdf(self) -> List[PageDocumentPdf]:
|
|
251
311
|
if self.is_null():
|
|
252
312
|
print(f'{__class__.__name__} Adicione imagens para prosseguir!')
|
|
253
313
|
return []
|
|
254
314
|
new_pages = []
|
|
255
|
-
|
|
256
|
-
|
|
315
|
+
maxnum: int = len(self.images)
|
|
316
|
+
self.progress_bar.start()
|
|
317
|
+
for num, image in enumerate(self.images):
|
|
318
|
+
self.progress_bar.update(
|
|
319
|
+
((num + 1) / maxnum) * 100,
|
|
320
|
+
f'Adicionando imagens: [{num + 1} de {maxnum}]'
|
|
321
|
+
)
|
|
322
|
+
new_pages.append(self.convert_image_to_pdf.from_image(image))
|
|
323
|
+
self.progress_bar.stop()
|
|
257
324
|
return new_pages
|
|
258
325
|
|
|
259
326
|
def set_paisagem(self):
|
|
@@ -281,15 +348,15 @@ class ImageStream(object):
|
|
|
281
348
|
self.images[num].set_optimize()
|
|
282
349
|
|
|
283
350
|
|
|
284
|
-
def get_data_from_pdfs(*, files_pdf:List[File]) -> pandas.DataFrame:
|
|
351
|
+
def get_data_from_pdfs(*, files_pdf: List[File]) -> pandas.DataFrame:
|
|
285
352
|
"""
|
|
286
353
|
Recebe uma lista de arquivos PDF e retorna um DataFrame com os dados das cartas.
|
|
287
354
|
"""
|
|
288
355
|
if not isinstance(files_pdf, list):
|
|
289
356
|
raise ValueError(f'Erro: Use: list() não {type(files_pdf)}')
|
|
290
357
|
|
|
291
|
-
data:List[pandas.DataFrame] = []
|
|
292
|
-
values:List[str] = []
|
|
358
|
+
data: List[pandas.DataFrame] = []
|
|
359
|
+
values: List[str] = []
|
|
293
360
|
doc = DocumentPdf()
|
|
294
361
|
for file in files_pdf:
|
|
295
362
|
doc.add_file_pdf(file)
|