IO4IT 4.0.7__tar.gz → 4.0.8__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.
- {io4it-4.0.7 → io4it-4.0.8}/PKG-INFO +2 -4
- {io4it-4.0.7 → io4it-4.0.8}/io4it.egg-info/PKG-INFO +2 -4
- io4it-4.0.8/orangecontrib/IO4IT/utils/pptx2jpg.py +102 -0
- {io4it-4.0.7 → io4it-4.0.8}/setup.py +1 -1
- io4it-4.0.7/orangecontrib/IO4IT/utils/pptx2jpg.py +0 -64
- {io4it-4.0.7 → io4it-4.0.8}/io4it.egg-info/SOURCES.txt +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/io4it.egg-info/dependency_links.txt +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/io4it.egg-info/entry_points.txt +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/io4it.egg-info/namespace_packages.txt +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/io4it.egg-info/requires.txt +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/io4it.egg-info/top_level.txt +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/__init__.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/ocr_function/__init__.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/ocr_function/word_converter.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/toolViews/designer/key_manager_ui.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/toolViews/designer/link_workflow_manager_ui.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/toolViews/key_manager_ui.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/toolViews/linkHTLMWorkflow_manager_ui.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/utils/__init__.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/utils/environment_collector.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/utils/keys_manager.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/utils/mail.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/utils/pool_exec_utils.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/utils/secret_manager.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/utils/utils_md.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/OWChatGpt.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/OWDeep_Search.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/OWDoclingToMarkdown.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/OWExportMarkdown.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/OWExtractTablesDocxToXlsx.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/OWInboxMailMonitoring.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/OWJsonToDataTable.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/OWMD2HTML.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/OWMarkdownLoader.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/OWMarkdownizer.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/OWOfficeNormalizer.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/OWPPTX2JPG.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/OWParserHTML.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/OWPdfType.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/OWPipAuditor.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/OWProcessPoolExecutor.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/OWS3Uploader.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/OWS3downloader.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/OWS3list.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/OWWebSearch.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/OWXLSX_insert.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/OWmailLoader.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/OWmailSender.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/OWwordpdf2docx.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/__init__.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/__init__.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/nogui.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/ow_extract_tables_docx_to_xlsx.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/ow_file_ext_selector.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/ow_json_to_data_table.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/owchatgpt.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/owdeepsearch.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/owdoclingasr.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/owdoclingtomarkdown.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/owexportmarkdown.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/owinboxmailmonitoring.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/owinsertdatatoexcel.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/owmailloader.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/owmailsender.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/owmarkdownizer.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/owmarkdownloader.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/owmd2html.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/owofficenormalizer.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/owparserhtml.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/owpdftype.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/owpipauditor.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/owpptx2jpg.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/owprocesspoolexecutor.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/owspeechtotext.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/owvisualizationer.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/owwebsearch.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/wordpdf2docx.ui +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/__init__.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/chatgpt.png +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/check_pdf.png +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/deepsearch.svg +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/dep_md_old.png +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/download.png +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/export_md.png +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/extract_table.png +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/file_extensor.png +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/html.png +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/json-file.png +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/list_aws.png +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/load_md.png +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/mail_loader.png +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/mail_writer.png +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/md.png +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/monitor-email.svg +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/office_normalizer.png +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/owmd2html.svg +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/pip_auditor.png +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/pptx2jpg.png +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/process_pool_executor.png +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/speech_to_text.png +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/upload.png +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/visualizationer.png +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/websearch.png +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/wordpdf2docx.png +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons/xlsx_insert.png +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/icons_dev/__init__.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/orangecontrib/__init__.py +0 -0
- {io4it-4.0.7 → io4it-4.0.8}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
2
|
Name: io4it
|
|
3
|
-
Version: 4.0.
|
|
3
|
+
Version: 4.0.8
|
|
4
4
|
Home-page:
|
|
5
5
|
Author:
|
|
6
6
|
Author-email:
|
|
@@ -26,5 +26,3 @@ Requires-Dist: exchangelib
|
|
|
26
26
|
Requires-Dist: html2text
|
|
27
27
|
Requires-Dist: ddgs
|
|
28
28
|
Requires-Dist: CATEGORIT
|
|
29
|
-
Dynamic: keywords
|
|
30
|
-
Dynamic: requires-dist
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
2
|
Name: io4it
|
|
3
|
-
Version: 4.0.
|
|
3
|
+
Version: 4.0.8
|
|
4
4
|
Home-page:
|
|
5
5
|
Author:
|
|
6
6
|
Author-email:
|
|
@@ -26,5 +26,3 @@ Requires-Dist: exchangelib
|
|
|
26
26
|
Requires-Dist: html2text
|
|
27
27
|
Requires-Dist: ddgs
|
|
28
28
|
Requires-Dist: CATEGORIT
|
|
29
|
-
Dynamic: keywords
|
|
30
|
-
Dynamic: requires-dist
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
import time
|
|
3
|
+
import subprocess
|
|
4
|
+
import shutil
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
def get_conversion_method():
|
|
8
|
+
"""Determines the best available conversion method."""
|
|
9
|
+
# 1. Check for MS Office
|
|
10
|
+
if sys.platform.startswith("win"):
|
|
11
|
+
try:
|
|
12
|
+
import win32com.client
|
|
13
|
+
# Try to see if the COM object is registered
|
|
14
|
+
win32com.client.GetActiveObject("PowerPoint.Application")
|
|
15
|
+
return "office"
|
|
16
|
+
except:
|
|
17
|
+
try:
|
|
18
|
+
# If not running, try to see if it's dispatchable
|
|
19
|
+
win32com.client.Dispatch("PowerPoint.Application")
|
|
20
|
+
return "office"
|
|
21
|
+
except: pass
|
|
22
|
+
elif sys.platform == "darwin":
|
|
23
|
+
# Check if PowerPoint app exists on Mac
|
|
24
|
+
if Path("/Applications/Microsoft PowerPoint.app").exists():
|
|
25
|
+
return "office"
|
|
26
|
+
|
|
27
|
+
# 2. Check for LibreOffice (soffice)
|
|
28
|
+
if shutil.which("soffice"):
|
|
29
|
+
return "libreoffice"
|
|
30
|
+
|
|
31
|
+
# 3. Fallback to Aspose
|
|
32
|
+
return "aspose"
|
|
33
|
+
|
|
34
|
+
def convert_via_office(src: Path, pdf_path: Path):
|
|
35
|
+
if sys.platform.startswith("win"):
|
|
36
|
+
import win32com.client
|
|
37
|
+
powerpoint = win32com.client.Dispatch("PowerPoint.Application")
|
|
38
|
+
try:
|
|
39
|
+
presentation = powerpoint.Presentations.Open(str(src), WithWindow=False)
|
|
40
|
+
presentation.SaveAs(str(pdf_path), 32) # 32 = ppSaveAsPDF
|
|
41
|
+
presentation.Close()
|
|
42
|
+
finally:
|
|
43
|
+
# Note: We don't quit() powerpoint here to avoid killing other open docs
|
|
44
|
+
pass
|
|
45
|
+
elif sys.platform == "darwin":
|
|
46
|
+
script = f'tell application "Microsoft PowerPoint" to save (open POSIX file "{src}") in POSIX file "{pdf_path}" as PDF'
|
|
47
|
+
subprocess.run(["osascript", "-e", script], check=True)
|
|
48
|
+
|
|
49
|
+
def convert_via_libreoffice(src: Path, out_dir: Path):
|
|
50
|
+
subprocess.run([
|
|
51
|
+
"soffice", "--headless", "--convert-to", "pdf",
|
|
52
|
+
"--outdir", str(out_dir), str(src)
|
|
53
|
+
], check=True, capture_output=True)
|
|
54
|
+
return src.with_suffix(".pdf")
|
|
55
|
+
|
|
56
|
+
def process_one_pptx(file_path_str: str, unique_folder: bool = True):
|
|
57
|
+
try:
|
|
58
|
+
import fitz # PyMuPDF
|
|
59
|
+
except ImportError:
|
|
60
|
+
return [file_path_str, "", "nok", "0.0", "Erreur: PyMuPDF non installé"]
|
|
61
|
+
|
|
62
|
+
t0 = time.time()
|
|
63
|
+
src = Path(file_path_str).resolve()
|
|
64
|
+
out_dir = src.parent / (f"images_{src.stem}" if unique_folder else "images")
|
|
65
|
+
out_dir.mkdir(parents=True, exist_ok=True)
|
|
66
|
+
|
|
67
|
+
method = get_conversion_method()
|
|
68
|
+
img_list = []
|
|
69
|
+
|
|
70
|
+
try:
|
|
71
|
+
# --- PHASE 1: GENERATE IMAGES ---
|
|
72
|
+
if method == "aspose":
|
|
73
|
+
# import aspose.slides as slides
|
|
74
|
+
# with slides.Presentation(str(src)) as pres:
|
|
75
|
+
# for i, slide in enumerate(pres.slides, start=1):
|
|
76
|
+
# img_path = out_dir / f"{src.stem}_slide_{i:03d}.jpg"
|
|
77
|
+
# slide.get_thumbnail(1.5, 1.5).save(str(img_path), slides.export.ImageFormat.JPEG)
|
|
78
|
+
# img_list.append(str(img_path))
|
|
79
|
+
print("converting slides without having libre office or office isn't possible for the moment")
|
|
80
|
+
else:
|
|
81
|
+
# Office or LibreOffice both generate a PDF first
|
|
82
|
+
pdf_path = out_dir / f"{src.stem}.pdf"
|
|
83
|
+
if method == "office":
|
|
84
|
+
convert_via_office(src, pdf_path)
|
|
85
|
+
else: # libreoffice
|
|
86
|
+
convert_via_libreoffice(src, out_dir)
|
|
87
|
+
|
|
88
|
+
# Convert PDF pages to JPG using PyMuPDF
|
|
89
|
+
doc = fitz.open(str(pdf_path))
|
|
90
|
+
for i, page in enumerate(doc, start=1):
|
|
91
|
+
pix = page.get_pixmap(dpi=150)
|
|
92
|
+
img_path = out_dir / f"{src.stem}_slide_{i:03d}.jpg"
|
|
93
|
+
pix.save(str(img_path))
|
|
94
|
+
img_list.append(str(img_path))
|
|
95
|
+
doc.close()
|
|
96
|
+
if pdf_path.exists(): pdf_path.unlink()
|
|
97
|
+
|
|
98
|
+
duration = time.time() - t0
|
|
99
|
+
return [str(src), "|".join(img_list), "ok", f"{duration:.2f}", f"{len(img_list)} slides ({method})"]
|
|
100
|
+
|
|
101
|
+
except Exception as e:
|
|
102
|
+
return [str(src), "", "nok", f"{time.time()-t0:.2f}", f"Method {method} failed: {str(e)}"]
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import sys
|
|
2
|
-
import time
|
|
3
|
-
import subprocess
|
|
4
|
-
from pathlib import Path
|
|
5
|
-
|
|
6
|
-
def pptx_to_pdf(pptx_path: Path) -> Path:
|
|
7
|
-
pdf_path = pptx_path.with_suffix(".pdf")
|
|
8
|
-
if sys.platform.startswith("win"):
|
|
9
|
-
import win32com.client
|
|
10
|
-
powerpoint = win32com.client.Dispatch("PowerPoint.Application")
|
|
11
|
-
try:
|
|
12
|
-
presentation = powerpoint.Presentations.Open(str(pptx_path), WithWindow=False)
|
|
13
|
-
presentation.SaveAs(str(pdf_path), 32)
|
|
14
|
-
presentation.Close()
|
|
15
|
-
except Exception as e:
|
|
16
|
-
raise RuntimeError(f"Erreur PowerPoint : {e}")
|
|
17
|
-
elif sys.platform == "darwin":
|
|
18
|
-
script = f'tell application "Microsoft PowerPoint" to save (open POSIX file "{pptx_path}") in POSIX file "{pdf_path}" as PDF'
|
|
19
|
-
subprocess.run(["osascript", "-e", script], check=True)
|
|
20
|
-
else:
|
|
21
|
-
raise RuntimeError("Système d'exploitation non supporté.")
|
|
22
|
-
return pdf_path
|
|
23
|
-
|
|
24
|
-
def process_one_pptx(file_path_str: str, unique_folder: bool = True):
|
|
25
|
-
try:
|
|
26
|
-
import fitz
|
|
27
|
-
except ImportError:
|
|
28
|
-
return [file_path_str, "", "nok", "0.0", "Erreur: PyMuPDF (fitz) non installé"]
|
|
29
|
-
|
|
30
|
-
t0 = time.time()
|
|
31
|
-
src = Path(file_path_str).resolve()
|
|
32
|
-
|
|
33
|
-
# ✅ unique_folder=True → un dossier par pptx : images_monFichier/
|
|
34
|
-
# ✅ unique_folder=False → tout dans un dossier commun : images/ (à côté des pptx)
|
|
35
|
-
if unique_folder:
|
|
36
|
-
out_dir = src.parent / f"images_{src.stem}"
|
|
37
|
-
else:
|
|
38
|
-
out_dir = src.parent / "images"
|
|
39
|
-
|
|
40
|
-
try:
|
|
41
|
-
out_dir.mkdir(parents=True, exist_ok=True)
|
|
42
|
-
|
|
43
|
-
pdf_path = pptx_to_pdf(src)
|
|
44
|
-
|
|
45
|
-
doc = fitz.open(str(pdf_path))
|
|
46
|
-
img_list = []
|
|
47
|
-
for i, page in enumerate(doc, start=1):
|
|
48
|
-
pix = page.get_pixmap(dpi=150)
|
|
49
|
-
# ✅ Préfixe avec le nom du pptx pour éviter les collisions en mode commun
|
|
50
|
-
img_path = out_dir / f"{src.stem}_slide_{i:03d}.jpg"
|
|
51
|
-
pix.save(str(img_path))
|
|
52
|
-
img_list.append(str(img_path))
|
|
53
|
-
doc.close()
|
|
54
|
-
|
|
55
|
-
if pdf_path.exists():
|
|
56
|
-
pdf_path.unlink()
|
|
57
|
-
|
|
58
|
-
duration = time.time() - t0
|
|
59
|
-
return [str(src), "|".join(img_list), "ok", f"{duration:.2f}", f"{len(img_list)} slides"]
|
|
60
|
-
|
|
61
|
-
except Exception as e:
|
|
62
|
-
duration = time.time() - t0
|
|
63
|
-
import traceback
|
|
64
|
-
return [str(src), "", "nok", f"{duration:.2f}", f"{str(e)}\n{traceback.format_exc()}"]
|
|
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
|
{io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/toolViews/designer/link_workflow_manager_ui.ui
RENAMED
|
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
|
|
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
|
{io4it-4.0.7 → io4it-4.0.8}/orangecontrib/IO4IT/widgets/designer/ow_extract_tables_docx_to_xlsx.ui
RENAMED
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|