convert-stream 2.3.5__tar.gz → 2.3.6__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.
- {convert_stream-2.3.5 → convert_stream-2.3.6}/PKG-INFO +1 -1
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream/__init__.py +5 -4
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream/pdf/pdf_document.py +40 -29
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream/pdf/pdf_page.py +10 -0
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream/pdf/pdf_to_image.py +60 -10
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream.egg-info/PKG-INFO +1 -1
- {convert_stream-2.3.5 → convert_stream-2.3.6}/pyproject.toml +1 -1
- {convert_stream-2.3.5 → convert_stream-2.3.6}/README.md +0 -0
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream/__main__.py +0 -0
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream/_version.py +0 -0
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream/doc_stream.py +0 -0
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream/image/__init__.py +0 -0
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream/image/img_object.py +0 -0
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream/mod_types/__init__.py +0 -0
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream/mod_types/enums.py +0 -0
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream/mod_types/modules.py +0 -0
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream/mod_types/table_types.py +0 -0
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream/pdf/__init__.py +0 -0
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream/pdf/image_to_pdf.py +0 -0
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream/sheets/__init__.py +0 -0
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream/sheets/load.py +0 -0
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream/sheets/parse.py +0 -0
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream/sheets/save.py +0 -0
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream/table_files.py +0 -0
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream/text/__init__.py +0 -0
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream/text/date.py +0 -0
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream/text/find_text.py +0 -0
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream/text/terminal.py +0 -0
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream.egg-info/SOURCES.txt +0 -0
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream.egg-info/dependency_links.txt +0 -0
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream.egg-info/requires.txt +0 -0
- {convert_stream-2.3.5 → convert_stream-2.3.6}/convert_stream.egg-info/top_level.txt +0 -0
- {convert_stream-2.3.5 → convert_stream-2.3.6}/setup.cfg +0 -0
|
@@ -13,7 +13,7 @@ from .mod_types import (
|
|
|
13
13
|
LibImageToPdf, create_dict_map_from_file, create_void_dict_map, RotationAngle
|
|
14
14
|
)
|
|
15
15
|
from .image import ImageObject, CollectionImages
|
|
16
|
-
from .pdf import DocumentPdf, PageDocumentPdf, CollectionPagePdf
|
|
16
|
+
from .pdf import DocumentPdf, PageDocumentPdf, CollectionPagePdf, ConvertPdfToImages, ConvertImageToPdf
|
|
17
17
|
from .pdf.pdf_document import SearchableTextPdf
|
|
18
18
|
from .doc_stream import PdfStream, SplitPdf
|
|
19
19
|
from .table_files import PdfFinder
|
|
@@ -76,9 +76,10 @@ __all__ = [
|
|
|
76
76
|
'__modify_date__', '__author__', '__license__', '__module_name__', '__version__',
|
|
77
77
|
'PdfStream', 'DocumentPdf', 'PageDocumentPdf', 'CollectionPagePdf', 'CollectionImages',
|
|
78
78
|
'ImageObject', 'File', 'Directory', 'LibraryDocs', 'InputFiles', 'SearchableTextPdf',
|
|
79
|
-
'PdfFinder', 'SplitPdf', '
|
|
80
|
-
'MetaDataFile', 'MetaDataItem', '
|
|
79
|
+
'PdfFinder', 'SplitPdf', 'LibImageToPdf', 'RotationAngle', 'ConvertImageToPdf', 'ConvertPdfToImages',
|
|
80
|
+
'MetaDataFile', 'MetaDataItem', 'ColumnsTable', 'ListString', 'ArrayString',
|
|
81
81
|
'HeadCell', 'HeadValues', 'ColumnBody', 'TextTable', 'LibDate', 'LibPDF', 'LibImage', 'LibPdfToImage',
|
|
82
|
-
'
|
|
82
|
+
'read_pdf', 'read_files_pdf', 'read_image', 'create_dict_map_from_file', 'create_void_dict_map',
|
|
83
|
+
'create_metadata',
|
|
83
84
|
]
|
|
84
85
|
|
|
@@ -9,17 +9,19 @@ from io import BytesIO
|
|
|
9
9
|
from typing import Union
|
|
10
10
|
import pandas as pd
|
|
11
11
|
from soup_files import File, Directory, LibraryDocs, InputFiles, ProgressBarAdapter, JsonConvert
|
|
12
|
-
from convert_stream.mod_types import
|
|
12
|
+
from convert_stream.mod_types import (
|
|
13
|
+
get_hash_from_bytes, create_metadata, MetaDataFile, MetaDataItem
|
|
14
|
+
)
|
|
13
15
|
from convert_stream.mod_types.table_types import (
|
|
14
|
-
ListItems,
|
|
16
|
+
ListItems, create_dict_map_values, concat_maps, create_void_dict_map, ColumnBody,
|
|
15
17
|
HeadCell, HeadValues, ColumnsTable
|
|
16
18
|
)
|
|
17
19
|
from convert_stream.mod_types.enums import LibPDF
|
|
18
20
|
from convert_stream.mod_types.modules import (
|
|
19
|
-
DEFAULT_LIB_PDF, ModDocPdf, PdfWriter, PdfReader,
|
|
21
|
+
DEFAULT_LIB_PDF, ModDocPdf, PdfWriter, PdfReader, fitz, MOD_FITZ, MOD_PYPDF
|
|
20
22
|
)
|
|
21
23
|
from convert_stream.pdf.pdf_page import PageDocumentPdf
|
|
22
|
-
from convert_stream.text import
|
|
24
|
+
from convert_stream.text import show_warning, FindText
|
|
23
25
|
|
|
24
26
|
|
|
25
27
|
class SearchableTextPdf(object):
|
|
@@ -212,6 +214,8 @@ class ImplementDocumentFitz(ABCDocument):
|
|
|
212
214
|
pg: fitz.Page = self.mod_doc_pdf.load_page(idx) # retorna fitz.Page
|
|
213
215
|
if pg is not None:
|
|
214
216
|
_page_pdf = PageDocumentPdf.create_from_page_fitz(pg, pg.number + 1)
|
|
217
|
+
_page_pdf.metadata = self.metadata
|
|
218
|
+
_page_pdf.metadata.md5 = MetaDataItem('nan')
|
|
215
219
|
return _page_pdf
|
|
216
220
|
|
|
217
221
|
def add_page(self, page: PageDocumentPdf):
|
|
@@ -242,13 +246,17 @@ class ImplementDocumentFitz(ABCDocument):
|
|
|
242
246
|
pages = []
|
|
243
247
|
for num, pg in enumerate(self.mod_doc_pdf):
|
|
244
248
|
page_pdf = PageDocumentPdf.create_from_page_fitz(pg, num + 1)
|
|
249
|
+
page_pdf.metadata = self.metadata
|
|
250
|
+
page_pdf.metadata.md5 = MetaDataItem('nan')
|
|
245
251
|
pages.append(page_pdf)
|
|
246
252
|
return pages
|
|
247
253
|
|
|
248
254
|
@classmethod
|
|
249
255
|
def create_from_bytes(cls, bt: BytesIO) -> ImplementDocumentFitz:
|
|
250
256
|
# Cria documento a partir de BytesIO
|
|
251
|
-
|
|
257
|
+
if not MOD_FITZ:
|
|
258
|
+
raise ImportError("Módulo fitz|pymupdf não instalado!\nUse pip install fitz.")
|
|
259
|
+
doc: ModDocPdf = fitz.Document(stream=bt.getvalue(), filetype="pdf")
|
|
252
260
|
name = get_hash_from_bytes(bt)
|
|
253
261
|
_obj_doc = cls(doc)
|
|
254
262
|
_obj_doc.metadata.name = MetaDataItem(name)
|
|
@@ -258,6 +266,8 @@ class ImplementDocumentFitz(ABCDocument):
|
|
|
258
266
|
@classmethod
|
|
259
267
|
def create_from_file(cls, file: File) -> ImplementDocumentFitz:
|
|
260
268
|
# Cria documento a partir de caminho no disco
|
|
269
|
+
if not MOD_FITZ:
|
|
270
|
+
raise ImportError("Módulo fitz|pymupdf não instalado!\nUse pip install fitz.")
|
|
261
271
|
doc = fitz.open(file.path)
|
|
262
272
|
_obj_doc = cls(doc)
|
|
263
273
|
_obj_doc.metadata = create_metadata(file)
|
|
@@ -318,7 +328,10 @@ class ImplementDocumentPyPdf(ABCDocument):
|
|
|
318
328
|
# Acessa a página pela lista self.mod_doc_pdf.pages
|
|
319
329
|
pg = self.mod_doc_pdf.pages[idx]
|
|
320
330
|
# O número da página é idx + 1
|
|
321
|
-
|
|
331
|
+
page_pdf_doc = PageDocumentPdf.create_from_page_pypdf(pg, idx + 1)
|
|
332
|
+
page_pdf_doc.metadata = self.metadata
|
|
333
|
+
page_pdf_doc.metadata.md5 = MetaDataItem('nan')
|
|
334
|
+
return page_pdf_doc
|
|
322
335
|
return None
|
|
323
336
|
|
|
324
337
|
def add_page(self, page: PageDocumentPdf):
|
|
@@ -342,12 +355,16 @@ class ImplementDocumentPyPdf(ABCDocument):
|
|
|
342
355
|
pages_pdf: list[PageDocumentPdf] = []
|
|
343
356
|
for num, page in enumerate(self.mod_doc_pdf.pages):
|
|
344
357
|
pg = PageDocumentPdf.create_from_page_pypdf(page, num + 1)
|
|
358
|
+
pg.metadata = self.metadata
|
|
359
|
+
pg.metadata.md5 = MetaDataItem('nan')
|
|
345
360
|
pages_pdf.append(pg)
|
|
346
361
|
return pages_pdf
|
|
347
362
|
|
|
348
363
|
@classmethod
|
|
349
364
|
def create_from_bytes(cls, bt: BytesIO) -> ImplementDocumentPyPdf:
|
|
350
365
|
# Usa PdfReader diretamente de BytesIO
|
|
366
|
+
if not MOD_PYPDF:
|
|
367
|
+
raise ImportError("Módulo pypdf não instalado!\nUse pip install pypdf.")
|
|
351
368
|
bt.seek(0)
|
|
352
369
|
reader = PdfReader(bt)
|
|
353
370
|
bt.seek(0)
|
|
@@ -366,6 +383,8 @@ class ImplementDocumentPyPdf(ABCDocument):
|
|
|
366
383
|
@classmethod
|
|
367
384
|
def create_from_file(cls, file: File) -> ImplementDocumentPyPdf:
|
|
368
385
|
# Usa PdfReader diretamente de arquivo
|
|
386
|
+
if not MOD_PYPDF:
|
|
387
|
+
raise ImportError("Módulo pypdf não instalado!\nUse pip install pypdf.")
|
|
369
388
|
reader = PdfReader(file.absolute())
|
|
370
389
|
pdf_writer = PdfWriter()
|
|
371
390
|
for p in reader.pages:
|
|
@@ -420,8 +439,8 @@ class DocumentPdf(object):
|
|
|
420
439
|
if lib_pdf == LibPDF.PYPDF:
|
|
421
440
|
name = get_hash_from_bytes(_tmp_bytes)
|
|
422
441
|
self.doc_pdf = ImplementDocumentPyPdf(document)
|
|
423
|
-
self.doc_pdf.metadata
|
|
424
|
-
self.doc_pdf.metadata
|
|
442
|
+
self.doc_pdf.metadata.name = MetaDataItem(name)
|
|
443
|
+
self.doc_pdf.metadata.md5 = MetaDataItem(name)
|
|
425
444
|
del _tmp_bytes
|
|
426
445
|
elif lib_pdf == LibPDF.FITZ:
|
|
427
446
|
self.doc_pdf = ImplementDocumentFitz.create_from_bytes(_tmp_bytes)
|
|
@@ -433,8 +452,8 @@ class DocumentPdf(object):
|
|
|
433
452
|
elif lib_pdf == LibPDF.FITZ:
|
|
434
453
|
name = get_hash_from_bytes(_tmp_bytes)
|
|
435
454
|
self.doc_pdf = ImplementDocumentFitz(document)
|
|
436
|
-
self.doc_pdf.metadata
|
|
437
|
-
self.doc_pdf.metadata
|
|
455
|
+
self.doc_pdf.metadata.name = MetaDataItem(name)
|
|
456
|
+
self.doc_pdf.metadata.md5 = MetaDataItem(name)
|
|
438
457
|
del _tmp_bytes
|
|
439
458
|
elif isinstance(document, BytesIO):
|
|
440
459
|
if lib_pdf == LibPDF.PYPDF:
|
|
@@ -524,7 +543,7 @@ class DocumentPdf(object):
|
|
|
524
543
|
else:
|
|
525
544
|
_values = txt_page.split(separator)
|
|
526
545
|
|
|
527
|
-
if self.metadata
|
|
546
|
+
if not self.metadata.file_path.is_empty:
|
|
528
547
|
return create_dict_map_values(
|
|
529
548
|
_values, page_num=f'{page.number_page}', file_type='.pdf',
|
|
530
549
|
)
|
|
@@ -533,8 +552,8 @@ class DocumentPdf(object):
|
|
|
533
552
|
_values,
|
|
534
553
|
page_num=f'{page.number_page}',
|
|
535
554
|
file_type='.pdf',
|
|
536
|
-
file_path=self.metadata
|
|
537
|
-
dir_path=self.metadata
|
|
555
|
+
file_path=self.metadata.file_path,
|
|
556
|
+
dir_path=self.metadata.dir_path,
|
|
538
557
|
)
|
|
539
558
|
|
|
540
559
|
def to_dict(self, separator: str = '\n') -> dict[str, ColumnBody]:
|
|
@@ -577,19 +596,15 @@ class DocumentPdf(object):
|
|
|
577
596
|
except Exception as e:
|
|
578
597
|
print(f'{__class__.__name__} {e}')
|
|
579
598
|
else:
|
|
580
|
-
file_path = self.metadata['file_path']
|
|
581
|
-
file_name = self.metadata['name']
|
|
582
|
-
dir_path = self.metadata['dir_path']
|
|
583
|
-
file_extension = self.metadata['extension']
|
|
584
599
|
new_line = {
|
|
585
600
|
ColumnsTable.KEY.value: f'{idx}',
|
|
586
601
|
ColumnsTable.NUM_PAGE.value: f'{_page.number_page}',
|
|
587
602
|
ColumnsTable.NUM_LINE.value: f'{idx+1}',
|
|
588
603
|
ColumnsTable.TEXT.value: math_text,
|
|
589
|
-
ColumnsTable.FILE_NAME.value:
|
|
590
|
-
ColumnsTable.FILETYPE.value:
|
|
591
|
-
ColumnsTable.FILE_PATH.value: file_path
|
|
592
|
-
ColumnsTable.DIR.value: dir_path
|
|
604
|
+
ColumnsTable.FILE_NAME.value: self.metadata.name,
|
|
605
|
+
ColumnsTable.FILETYPE.value: self.metadata.extension,
|
|
606
|
+
ColumnsTable.FILE_PATH.value: self.metadata.file_path,
|
|
607
|
+
ColumnsTable.DIR.value: self.metadata.dir_path,
|
|
593
608
|
}
|
|
594
609
|
_searchable.add_line(new_line)
|
|
595
610
|
return _searchable
|
|
@@ -623,19 +638,15 @@ class DocumentPdf(object):
|
|
|
623
638
|
except Exception as e:
|
|
624
639
|
print(f'{__class__.__name__} {e}')
|
|
625
640
|
else:
|
|
626
|
-
file_path = self.metadata['file_path']
|
|
627
|
-
file_name = self.metadata['name']
|
|
628
|
-
dir_path = self.metadata['dir_path']
|
|
629
|
-
file_extension = self.metadata['extension']
|
|
630
641
|
new_line = {
|
|
631
642
|
ColumnsTable.KEY.value: f'{idx}',
|
|
632
643
|
ColumnsTable.NUM_PAGE.value: f'{_page.number_page}',
|
|
633
644
|
ColumnsTable.NUM_LINE.value: f'{idx + 1}',
|
|
634
645
|
ColumnsTable.TEXT.value: math_text,
|
|
635
|
-
ColumnsTable.FILE_NAME.value:
|
|
636
|
-
ColumnsTable.FILETYPE.value:
|
|
637
|
-
ColumnsTable.FILE_PATH.value: file_path
|
|
638
|
-
ColumnsTable.DIR.value: dir_path
|
|
646
|
+
ColumnsTable.FILE_NAME.value: self.metadata.name,
|
|
647
|
+
ColumnsTable.FILETYPE.value: self.metadata.extension,
|
|
648
|
+
ColumnsTable.FILE_PATH.value: self.metadata.file_path,
|
|
649
|
+
ColumnsTable.DIR.value: self.metadata.dir_path,
|
|
639
650
|
}
|
|
640
651
|
_searchable.add_line(new_line)
|
|
641
652
|
return _searchable
|
|
@@ -14,6 +14,7 @@ from convert_stream.mod_types.table_types import (
|
|
|
14
14
|
from convert_stream.mod_types.modules import (
|
|
15
15
|
ModPagePdf, PageObject, fitz
|
|
16
16
|
)
|
|
17
|
+
from convert_stream.mod_types import MetaDataItem, MetaDataFile
|
|
17
18
|
from convert_stream.text.find_text import FindText, ArrayString
|
|
18
19
|
|
|
19
20
|
|
|
@@ -25,6 +26,7 @@ class ABCPagePdf(ABC):
|
|
|
25
26
|
self.mod_page: ModPagePdf = mod_page
|
|
26
27
|
self.lib_pdf: LibPDF = LibPDF.NOT_IMPLEMENTED
|
|
27
28
|
self.number_page: int = page_number
|
|
29
|
+
self.metadata: MetaDataFile = MetaDataFile()
|
|
28
30
|
|
|
29
31
|
@abstractmethod
|
|
30
32
|
def get_width(self) -> float:
|
|
@@ -191,6 +193,14 @@ class PageDocumentPdf(object):
|
|
|
191
193
|
self.implement_page_pdf: ABCPagePdf = page_pdf
|
|
192
194
|
self.lib_pdf: LibPDF = page_pdf.lib_pdf
|
|
193
195
|
|
|
196
|
+
@property
|
|
197
|
+
def metadata(self) -> MetaDataFile:
|
|
198
|
+
return self.implement_page_pdf.metadata
|
|
199
|
+
|
|
200
|
+
@metadata.setter
|
|
201
|
+
def metadata(self, metadata: MetaDataFile):
|
|
202
|
+
self.implement_page_pdf.metadata = metadata
|
|
203
|
+
|
|
194
204
|
def __repr__(self) -> str:
|
|
195
205
|
return self.to_string()
|
|
196
206
|
|
|
@@ -5,11 +5,14 @@
|
|
|
5
5
|
"""
|
|
6
6
|
from __future__ import annotations
|
|
7
7
|
from abc import ABC, abstractmethod
|
|
8
|
+
|
|
9
|
+
from convert_stream import CollectionImages
|
|
8
10
|
from soup_files import Directory, ProgressBarAdapter, CreatePbar
|
|
9
11
|
from convert_stream.mod_types.enums import LibPdfToImage
|
|
10
|
-
from convert_stream.mod_types.modules import DEFAULT_LIB_PDF_TO_IMG, DEFAULT_LIB_IMAGE
|
|
12
|
+
from convert_stream.mod_types.modules import DEFAULT_LIB_PDF_TO_IMG, DEFAULT_LIB_IMAGE, LibPDF
|
|
11
13
|
from convert_stream.image.img_object import ImageObject, LibImage
|
|
12
14
|
from convert_stream.pdf.pdf_document import DocumentPdf
|
|
15
|
+
from convert_stream.pdf.pdf_page import PageDocumentPdf
|
|
13
16
|
|
|
14
17
|
try:
|
|
15
18
|
import fitz
|
|
@@ -134,24 +137,33 @@ class ImplementConvertPdfFitz(ABCConvertPdf):
|
|
|
134
137
|
|
|
135
138
|
class ConvertPdfToImages(object):
|
|
136
139
|
|
|
137
|
-
def __init__(self,
|
|
138
|
-
|
|
140
|
+
def __init__(self, mod_conv_to_img: ABCConvertPdf | DocumentPdf):
|
|
141
|
+
if isinstance(mod_conv_to_img, ABCConvertPdf):
|
|
142
|
+
self.mod_convert_to_image: ABCConvertPdf = mod_conv_to_img
|
|
143
|
+
elif isinstance(mod_conv_to_img, ImplementConvertPdfFitz):
|
|
144
|
+
self.mod_convert_to_image: ABCConvertPdf = mod_conv_to_img
|
|
145
|
+
elif isinstance(mod_conv_to_img, DocumentPdf):
|
|
146
|
+
self.mod_conv_to_img = ImplementConvertPdfFitz(mod_conv_to_img)
|
|
147
|
+
else:
|
|
148
|
+
raise NotImplementedError()
|
|
139
149
|
|
|
140
150
|
def set_pbar(self, pbar: ProgressBarAdapter):
|
|
141
151
|
self.mod_convert_to_image.set_pbar(pbar)
|
|
142
152
|
|
|
143
153
|
def to_images(
|
|
144
|
-
self, *,
|
|
154
|
+
self, *,
|
|
155
|
+
dpi: int = 300,
|
|
156
|
+
lib_image: LibImage = DEFAULT_LIB_IMAGE,
|
|
145
157
|
) -> list[ImageObject]:
|
|
146
158
|
return self.mod_convert_to_image.to_images(dpi=dpi, lib_image=lib_image)
|
|
147
159
|
|
|
148
160
|
def to_files_image(
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
161
|
+
self,
|
|
162
|
+
output_dir: Directory, *,
|
|
163
|
+
replace: bool = False,
|
|
164
|
+
gaussian_filter: bool = False,
|
|
165
|
+
dpi: int = 300,
|
|
166
|
+
lib_image: LibImage = DEFAULT_LIB_IMAGE,
|
|
155
167
|
) -> None:
|
|
156
168
|
self.mod_convert_to_image.to_files_image(
|
|
157
169
|
dpi=dpi,
|
|
@@ -161,6 +173,44 @@ class ConvertPdfToImages(object):
|
|
|
161
173
|
gaussian_filter=gaussian_filter
|
|
162
174
|
)
|
|
163
175
|
|
|
176
|
+
def inner_images(self) -> CollectionImages:
|
|
177
|
+
"""
|
|
178
|
+
Extrair imagens embutidas nas páginas PDF.
|
|
179
|
+
"""
|
|
180
|
+
# doc = Document(stream=page_bytes, filetype="pdf")
|
|
181
|
+
collection_imgs: CollectionImages = CollectionImages([])
|
|
182
|
+
tmp_doc: fitz.Document
|
|
183
|
+
if self.mod_conv_to_img.document.lib_pdf == LibPDF.FITZ:
|
|
184
|
+
tmp_doc: fitz.Document = self.mod_conv_to_img.document.get_real_document()
|
|
185
|
+
elif self.mod_conv_to_img.document.lib_pdf == LibPDF.PYPDF:
|
|
186
|
+
tmp_doc = fitz.Document(
|
|
187
|
+
stream=self.mod_conv_to_img.document.to_bytes().getvalue(), filetype="pdf"
|
|
188
|
+
)
|
|
189
|
+
else:
|
|
190
|
+
raise NotImplementedError()
|
|
191
|
+
|
|
192
|
+
total = len(tmp_doc)
|
|
193
|
+
page: fitz.Page
|
|
194
|
+
for num, page in enumerate(tmp_doc):
|
|
195
|
+
# Extrair imagens embutidas na página
|
|
196
|
+
images_list: list = page.get_images(full=True)
|
|
197
|
+
for img in images_list:
|
|
198
|
+
try:
|
|
199
|
+
# Referência do objeto da imagem
|
|
200
|
+
xref = img[0]
|
|
201
|
+
# Extrair imagem
|
|
202
|
+
base_image = tmp_doc.extract_image(xref)
|
|
203
|
+
# Bytes da imagem
|
|
204
|
+
image_bytes = base_image["image"]
|
|
205
|
+
# Extensão (jpg, png, etc.)
|
|
206
|
+
image_ext = base_image["ext"]
|
|
207
|
+
except Exception as e:
|
|
208
|
+
print(e)
|
|
209
|
+
else:
|
|
210
|
+
img = ImageObject(image_bytes)
|
|
211
|
+
collection_imgs.append(img)
|
|
212
|
+
return collection_imgs
|
|
213
|
+
|
|
164
214
|
@classmethod
|
|
165
215
|
def create(cls, doc: DocumentPdf) -> ConvertPdfToImages:
|
|
166
216
|
_mod = ImplementConvertPdfFitz(doc)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|