English Documentation | Documentation française
extract_pptx_elements 用于从 PowerPoint .pptx 文件中按幻灯片提取图片、视频、音频、图表、图示、嵌入文件和文本。提取结果会按类型放入中文子文件夹,输出文件使用幻灯片序号作为前缀,便于定位资源来源。
V1.2.0 起新增配套的 restore_pptx_elements:在修改素材(例如批量去水印)后,可一键把图片写回 PPTX,并严格保持所有元素的位置不变。详见下文「PPTX 元素还原器」。
| 类型 | 支持内容 |
|---|---|
| 图片 | JPG, PNG, GIF, SVG, BMP, EMF, WMF, TIFF, WebP, JFIF |
| 视频 | MP4, AVI, MOV, MKV, WebM, WMV 等 |
| 音频 | MP3, WAV, AAC, M4A, OGG, MIDI, WMA 等 |
| 图表 | 图表 XML、样式和颜色定义 |
| 图示 | SmartArt 图示 XML |
| 嵌入对象 | PDF, DOCX, XLSX, ZIP 等 |
| 幻灯片文本 | 默认导出纯文本,可通过 --no-text 关闭 |
| 清单 | 自动生成 manifest.csv,记录输出文件与 PPTX 内部资源路径的对应关系 |
输出文件示例:图片/presentation_001.jpg、视频/presentation_002.mp4、图表/presentation_003.xml。文件名由 PPT 名称与三位页码组成;同一页同类型资源重复时,会自动追加 _02、_03 等序号。
本项目提供三个运行入口:
- Python 源码入口:
extract_pptx_elements.py - macOS 单文件启动器:
extract_pptx_elements.command - Windows 启动器:
extract_pptx_elements.cmd
| 入口 | 运行要求 |
|---|---|
extract_pptx_elements.py |
Python 3.8+ |
extract_pptx_elements.command |
macOS + Python 3 |
extract_pptx_elements.cmd |
Windows;优先使用 Python 3,回退到 PowerShell 5.1+ 和系统自带 .NET ZIP/XML 组件 |
本项目不需要安装第三方 Python 包,也不需要虚拟环境。Windows .cmd 已内嵌 Python 主实现和 PowerShell 回退实现:如果系统有 Python 3,会优先运行内嵌 Python;如果没有 Python,则使用内嵌 PowerShell。因此 Windows 入口不依赖外部 .py 或 .exe 文件。单独的 extract_pptx_elements.py 保留为可读、可修改的参考源码。
extract_pptx_elements.command 内嵌完整 Python 源码。运行时会将源码写入临时 Python 文件,并使用系统中的 python3 执行。
- 双击
extract_pptx_elements.command - 如果系统提示“无法验证开发者”,右键点击文件,选择“打开”,再确认运行
- 将
.pptx文件拖入窗口,按回车 - 提取结果会保存在 PPTX 文件旁边的
pptx_extracted_elements/目录
也可以在终端中运行:
./extract_pptx_elements.command presentation.pptxextract_pptx_elements.cmd 是 Windows 单文件启动入口。运行时会依次尝试 py -3、python 和 python3;如果找到 Python,会从 .cmd 自身提取内嵌 Python 源码到临时 .py 文件并执行。如果 Python 不可用,则回退到内嵌 PowerShell 提取逻辑,将 PowerShell 段写入临时 .ps1 文件后执行。
双击 .cmd 且没有传入参数时,窗口会提示拖入或输入 .pptx 文件路径;也可以将 PPTX 文件直接拖到 .cmd 文件上运行。
extract_pptx_elements.cmd presentation.pptxWindows 入口支持与 Python 源码一致的常用选项:
extract_pptx_elements.cmd presentation.pptx --no-text
extract_pptx_elements.cmd presentation.pptx --media-only
extract_pptx_elements.cmd presentation.pptx --overwrite
extract_pptx_elements.cmd presentation.pptx -o my_assets# 提取单个 PPTX 文件中的所有支持资源
python3 extract_pptx_elements.py presentation.pptx
# 指定输出目录
python3 extract_pptx_elements.py presentation.pptx -o my_assets
# 仅提取图片、视频和音频
python3 extract_pptx_elements.py presentation.pptx --media-only
# 不提取幻灯片文本
python3 extract_pptx_elements.py presentation.pptx --no-text
# 覆盖已有输出文件
python3 extract_pptx_elements.py presentation.pptx --overwrite
# 处理当前目录下所有非临时 .pptx 文件
python3 extract_pptx_elements.py默认情况下,输出目录会创建在 PPTX 文件旁边,目录名为 pptx_extracted_elements/。如果一次处理多个 PPTX 文件,每个文件会拥有独立子目录。
pptx_extracted_elements/
├── 图片/
│ ├── presentation_001.jpg
│ ├── presentation_001_02.jpg
│ └── presentation_002.png
├── 视频/
│ └── presentation_002.mp4
├── 图表/
│ └── presentation_003.xml
├── 文本/
│ └── presentation_003.txt
└── manifest.csv
处理多个 PPTX 文件时:
pptx_extracted_elements/
├── presentation1/
│ ├── 图片/
│ │ └── presentation1_001.jpg
│ └── manifest.csv
└── presentation2/
├── 图片/
│ └── presentation2_001.png
└── manifest.csv
| 字段 | 说明 |
|---|---|
slide |
三位幻灯片编号 |
output_file |
输出文件相对路径 |
kind |
资源类型,例如 image、video、audio、chart、diagram |
source_part |
PPTX 内部发起关系的 XML 路径 |
target_part |
PPTX 内部目标资源路径 |
relationship_id |
XML 关系 ID |
relationship_type |
完整 XML 关系类型 URI |
PowerPoint .pptx 文件本质上是 ZIP 压缩包,内部包含 XML、关系文件和媒体资源。本工具的流程如下:
- 将
.pptx作为 ZIP 打开 - 读取
ppt/presentation.xml和对应 relationships,确定幻灯片顺序 - 遍历每页幻灯片的 relationship 树,识别图片、视频、音频、图表、图示和嵌入对象
- 按类型复制资源到中文子文件夹
- 使用幻灯片编号生成输出文件名
- 默认提取可见文本;使用
--no-text可关闭文本导出 - 生成
manifest.csv,记录资源来源
scripts/ 已移除。原目录只包含可选的 PyInstaller 打包脚本,不属于软件运行路径,也不是终端用户执行本工具所需内容。
当前推荐运行入口:
- Python:
extract_pptx_elements.py - macOS:
extract_pptx_elements.command - Windows:
extract_pptx_elements.cmd
如需重新打包 .exe 或二进制文件,可在对应系统上直接运行 PyInstaller 命令;该流程属于发布构建流程,不影响上述入口的日常运行。
restore_pptx_elements 是提取工具的配套程序:把提取出来(并且修改过)的媒体文件按原位写回 PPTX。最典型的用途是——批量修复图片(例如去水印)后,一键生成与原文件版式完全一致的新 PPTX。
为什么位置不会变:元素的位置和大小记录在幻灯片 XML(<a:off> / <a:ext>)里,而不在图片字节里。还原时本工具只替换每个媒体部件的字节,从不改动任何 XML,因此每个元素都严格保持原始位置。这对图片是严格保证,对其它元素在实际中也保持不变。即使修复后的图片尺寸或格式发生变化,显示位置也不会改变(PowerPoint 仍按原版式框缩放显示)。
工作流程:
- 先用提取工具:
extract_pptx_elements.py "演示.pptx"→ 生成pptx_extracted_elements/ - 在
图片/里批量修改图片(保持文件名不变) - 再用还原工具:
restore_pptx_elements.py→ 生成演示_restored.pptx
还原工具会读取 manifest.csv,据此找到每张图片在 PPTX 内部的精确位置,并写回到原始文件的副本中(原文件不改动)。
运行入口与环境:
| 入口 | 运行要求 |
|---|---|
restore_pptx_elements.py |
Python 3.8+ |
restore_pptx_elements.command |
macOS + Python 3 |
restore_pptx_elements.cmd |
Windows;优先使用 Python 3,回退到内嵌 PowerShell 5.1+(免装 Python) |
macOS 使用方式:把 restore_pptx_elements.command 放在原始 PPTX 和 pptx_extracted_elements/ 文件夹旁边,双击即可一键还原;也可以把提取文件夹拖到窗口里。
Windows 使用方式:把 restore_pptx_elements.cmd 放在原始 PPTX 和 pptx_extracted_elements/ 文件夹旁边,双击即可一键还原;也可以把提取文件夹拖到 .cmd 上。与提取工具一样,.cmd 内嵌 Python 主实现与 PowerShell 回退:检测到 Python 就用 Python,否则用 PowerShell,无需额外安装。
Python 源码使用方式:
# 在提取文件夹旁边运行,自动找到素材和原始 PPTX
python3 restore_pptx_elements.py
# 指定提取文件夹
python3 restore_pptx_elements.py pptx_extracted_elements
# 指定原始 PPTX 和输出文件名
python3 restore_pptx_elements.py pptx_extracted_elements --pptx 演示.pptx -o 演示_已修复.pptx
# 只写回图片,其它元素保持原样
python3 restore_pptx_elements.py --images-only
# 只预演不生成文件
python3 restore_pptx_elements.py --dry-run常用选项:
| 选项 | 说明 |
|---|---|
--pptx 文件 |
指定原始 PPTX;默认根据清单自动查找 |
-o 文件名 |
指定输出 PPTX;默认 <原名>_restored.pptx |
--images-only |
只写回图片 |
--media-only |
只写回图片、视频、音频 |
--overwrite |
覆盖已存在的输出文件 |
--dry-run |
预演,不写文件 |
还原工具只替换内容有改动的部件:与原文件一致的素材会自动跳过;多页共用的同一张图片,只要改其中一份即可。如果同一部件的多份副本被改成不同内容,还原会停止并提示冲突。
详见 docs/ 目录下各版本发布记录。
MIT
extract_pptx_elements extracts slide-level resources from PowerPoint .pptx files, including images, videos, audio files, charts, diagrams, embedded files, and optional slide text. Extracted files are grouped into Chinese type folders and named with slide-number prefixes so each asset can be traced back to its source slide.
Since V1.2.0, the companion tool restore_pptx_elements writes edited media (for example, after a batch watermark cleanup) back into the PPTX with one click, keeping every element in its exact original position. See PPTX Element Restorer below.
| Type | Supported Content |
|---|---|
| Images | JPG, PNG, GIF, SVG, BMP, EMF, WMF, TIFF, WebP, JFIF |
| Videos | MP4, AVI, MOV, MKV, WebM, WMV, and more |
| Audio | MP3, WAV, AAC, M4A, OGG, MIDI, WMA, and more |
| Charts | Chart XML, style definitions, and color definitions |
| Diagrams | SmartArt diagram XML |
| Embedded objects | PDF, DOCX, XLSX, ZIP, and more |
| Slide text | Plain text export by default; disable it with --no-text |
| Manifest | Automatically writes manifest.csv with source mapping |
Example output names include 图片/presentation_001.jpg, 视频/presentation_002.mp4, and 图表/presentation_003.xml. The filename combines the PPTX name and a three-digit slide number. Repeated resources of the same type on the same slide receive suffixes such as _02 and _03.
This project provides three runtime entry points:
- Python source entry point:
extract_pptx_elements.py - macOS single-file launcher:
extract_pptx_elements.command - Windows launcher:
extract_pptx_elements.cmd
| Entry Point | Requirement |
|---|---|
extract_pptx_elements.py |
Python 3.8+ |
extract_pptx_elements.command |
macOS + Python 3 |
extract_pptx_elements.cmd |
Windows; prefers Python 3, then falls back to PowerShell 5.1+ and built-in .NET ZIP/XML APIs |
No third-party Python packages or virtual environment are required. The Windows .cmd embeds both the primary Python implementation and a PowerShell fallback. If Python 3 is available, it runs the embedded Python source first; if Python is unavailable, it falls back to the embedded PowerShell implementation. The Windows entry point does not depend on an external .py or .exe file. The standalone extract_pptx_elements.py remains available as readable and editable reference source.
extract_pptx_elements.command embeds the full Python source. At runtime, it writes the embedded source to a temporary Python file and executes it with the system python3.
- Double-click
extract_pptx_elements.command - If macOS shows an unidentified-developer warning, right-click the file, choose Open, and confirm
- Drag a
.pptxfile into the terminal window and press Enter - Extracted files are written next to the PPTX file under
pptx_extracted_elements/
Terminal usage:
./extract_pptx_elements.command presentation.pptxextract_pptx_elements.cmd is the Windows single-file entry point. At runtime, it tries py -3, python, and python3; if Python is available, it extracts the embedded Python source from the .cmd file into a temporary .py file and executes it. If Python is unavailable, it falls back to the embedded PowerShell extraction logic, writes the PowerShell section to a temporary .ps1 file, and executes that file.
When the .cmd file is double-clicked without arguments, the window prompts for a .pptx path. A PPTX file can also be dragged directly onto the .cmd file.
extract_pptx_elements.cmd presentation.pptxThe Windows entry point supports the same common options as the Python source entry point:
extract_pptx_elements.cmd presentation.pptx --no-text
extract_pptx_elements.cmd presentation.pptx --media-only
extract_pptx_elements.cmd presentation.pptx --overwrite
extract_pptx_elements.cmd presentation.pptx -o my_assets# Extract all supported resources from one PPTX file
python3 extract_pptx_elements.py presentation.pptx
# Extract to a custom output directory
python3 extract_pptx_elements.py presentation.pptx -o my_assets
# Extract only images, videos, and audio
python3 extract_pptx_elements.py presentation.pptx --media-only
# Disable visible slide text export
python3 extract_pptx_elements.py presentation.pptx --no-text
# Overwrite existing output files
python3 extract_pptx_elements.py presentation.pptx --overwrite
# Process all non-temporary .pptx files in the current directory
python3 extract_pptx_elements.pyBy default, the output directory is created next to the PPTX file and named pptx_extracted_elements/. When multiple PPTX files are processed at once, each file receives its own subdirectory.
pptx_extracted_elements/
├── 图片/
│ ├── presentation_001.jpg
│ ├── presentation_001_02.jpg
│ └── presentation_002.png
├── 视频/
│ └── presentation_002.mp4
├── 图表/
│ └── presentation_003.xml
├── 文本/
│ └── presentation_003.txt
└── manifest.csv
When processing multiple PPTX files:
pptx_extracted_elements/
├── presentation1/
│ ├── 图片/
│ │ └── presentation1_001.jpg
│ └── manifest.csv
└── presentation2/
├── 图片/
│ └── presentation2_001.png
└── manifest.csv
| Field | Description |
|---|---|
slide |
Three-digit slide number |
output_file |
Relative output file path |
kind |
Resource type, such as image, video, audio, chart, or diagram |
source_part |
Internal PPTX XML part that owns the relationship |
target_part |
Internal PPTX target resource path |
relationship_id |
XML relationship ID |
relationship_type |
Full relationship type URI |
A PowerPoint .pptx file is a ZIP package containing XML files, relationship files, and media resources. The extraction process is:
- Open the
.pptxas a ZIP package - Read
ppt/presentation.xmland its relationships to determine slide order - Walk each slide relationship tree to identify images, videos, audio files, charts, diagrams, and embedded objects
- Copy resources into Chinese type folders
- Generate output file names using slide-number prefixes
- Extract visible text by default; disable text export with
--no-text - Write
manifest.csvwith source mapping
The scripts/ directory has been removed. It only contained optional PyInstaller build helpers, which are not part of the runtime path and are not required for end-user execution.
Recommended runtime entry points:
- Python:
extract_pptx_elements.py - macOS:
extract_pptx_elements.command - Windows:
extract_pptx_elements.cmd
If maintainers need to build an .exe or binary package, they can run PyInstaller directly on the target operating system. That process belongs to release packaging and does not affect everyday launcher usage.
restore_pptx_elements is the companion to the extractor: it writes the extracted (and possibly edited) media back into the PPTX in place. The typical use case is batch-editing images — for example, removing a watermark — and then rebuilding a new PPTX whose layout is identical to the original, with one click.
Why positions never change: an element's position and size live in the slide XML (<a:off> / <a:ext>), not in the image bytes. During restore this tool only swaps the bytes of each media part and never touches any XML, so every element keeps its exact original position. This is a strict guarantee for images and holds in practice for every other element too. Even if a repaired image has a different pixel size or format, its on-slide position does not change (PowerPoint still scales it into the original layout box).
Workflow:
- Extract first:
extract_pptx_elements.py "deck.pptx"→ producespptx_extracted_elements/ - Batch-edit images in
图片/(keep the file names unchanged) - Restore:
restore_pptx_elements.py→ producesdeck_restored.pptx
The restorer reads manifest.csv to locate each image's exact part inside the PPTX and writes it back into a copy of the original file (the original is left untouched).
Entry points and requirements:
| Entry point | Requirement |
|---|---|
restore_pptx_elements.py |
Python 3.8+ |
restore_pptx_elements.command |
macOS + Python 3 |
restore_pptx_elements.cmd |
Windows; prefers Python 3, falls back to embedded PowerShell 5.1+ (no Python needed) |
macOS usage: place restore_pptx_elements.command next to the original PPTX and the pptx_extracted_elements/ folder, then double-click for one-click restore. You can also drag the extracted folder into the window.
Windows usage: place restore_pptx_elements.cmd next to the original PPTX and the pptx_extracted_elements/ folder, then double-click for one-click restore; you can also drag the extracted folder onto the .cmd. Like the extractor, the .cmd embeds both a Python implementation (preferred) and a PowerShell fallback, so no separate install is required.
Python source usage:
# Run next to the extracted folder; auto-detects the assets and original PPTX
python3 restore_pptx_elements.py
# Point at a specific extracted folder
python3 restore_pptx_elements.py pptx_extracted_elements
# Specify the original PPTX and output name
python3 restore_pptx_elements.py pptx_extracted_elements --pptx deck.pptx -o deck_fixed.pptx
# Write back images only, leaving every other element as-is
python3 restore_pptx_elements.py --images-only
# Preview without writing a file
python3 restore_pptx_elements.py --dry-runCommon options:
| Option | Description |
|---|---|
--pptx FILE |
Original PPTX; auto-detected from the manifest by default |
-o FILE |
Output PPTX; defaults to <name>_restored.pptx |
--images-only |
Write back images only |
--media-only |
Write back images, videos, and audio only |
--overwrite |
Overwrite an existing output file |
--dry-run |
Preview without writing |
The restorer only swaps parts whose content actually changed: assets identical to the original are skipped, and for an image shared by several slides, editing any one copy is enough. If several copies of the same part are edited differently, restore stops and reports the conflict.
See per-version release notes in the docs/ directory.
MIT
extract_pptx_elements extrait les ressources d’un fichier PowerPoint .pptx au niveau de chaque diapositive, notamment les images, les vidéos, les fichiers audio, les graphiques, les diagrammes, les fichiers intégrés et, en option, le texte visible des diapositives. Les fichiers extraits sont classés dans des dossiers de type en chinois et nommés avec un préfixe correspondant au numéro de la diapositive, afin de faciliter le suivi de leur origine.
Depuis la V1.2.0, l’outil compagnon restore_pptx_elements réécrit les médias modifiés (par exemple après un nettoyage de filigrane par lot) dans le PPTX en un clic, en conservant chaque élément à sa position d’origine. Voir Restaurateur d’éléments PPTX ci-dessous.
| Type | Contenu pris en charge |
|---|---|
| Images | JPG, PNG, GIF, SVG, BMP, EMF, WMF, TIFF, WebP, JFIF |
| Vidéos | MP4, AVI, MOV, MKV, WebM, WMV, etc. |
| Audio | MP3, WAV, AAC, M4A, OGG, MIDI, WMA, etc. |
| Graphiques | XML du graphique, définitions de style et de couleurs |
| Diagrammes | XML des diagrammes SmartArt |
| Objets intégrés | PDF, DOCX, XLSX, ZIP, etc. |
| Texte des diapositives | Export en texte brut par défaut ; désactivation avec --no-text |
| Manifeste | Génération automatique de manifest.csv avec la correspondance des sources |
Exemples de noms de sortie : 图片/presentation_001.jpg, 视频/presentation_002.mp4 et 图表/presentation_003.xml. Le nom combine le nom du PPTX et un numéro de diapositive à trois chiffres. Lorsque plusieurs ressources du même type existent sur une même diapositive, des suffixes comme _02 et _03 sont ajoutés automatiquement.
Le projet fournit trois points d’entrée :
- Script Python source :
extract_pptx_elements.py - Lanceur macOS en fichier unique :
extract_pptx_elements.command - Lanceur Windows :
extract_pptx_elements.cmd
| Point d’entrée | Prérequis |
|---|---|
extract_pptx_elements.py |
Python 3.8+ |
extract_pptx_elements.command |
macOS + Python 3 |
extract_pptx_elements.cmd |
Windows ; utilise Python 3 en priorité, puis bascule vers PowerShell 5.1+ et les API .NET ZIP/XML intégrées |
Aucun paquet Python tiers ni environnement virtuel n’est nécessaire. Le point d’entrée Windows .cmd intègre à la fois l’implémentation Python principale et une implémentation PowerShell de secours. Si Python 3 est disponible, il exécute d’abord le code Python intégré ; si Python n’est pas disponible, il bascule vers l’implémentation PowerShell intégrée. Le point d’entrée Windows ne dépend d’aucun fichier .py ou .exe externe. Le fichier séparé extract_pptx_elements.py reste disponible comme source lisible et modifiable.
extract_pptx_elements.command contient le code source Python complet. À l’exécution, il écrit ce code intégré dans un fichier Python temporaire, puis l’exécute avec le python3 du système.
- Double-cliquez sur
extract_pptx_elements.command - Si macOS affiche un avertissement concernant un développeur non identifié, faites un clic droit sur le fichier, choisissez Ouvrir, puis confirmez
- Glissez un fichier
.pptxdans la fenêtre du terminal, puis appuyez sur Entrée - Les fichiers extraits sont écrits à côté du fichier PPTX, dans
pptx_extracted_elements/
Utilisation dans le terminal :
./extract_pptx_elements.command presentation.pptxextract_pptx_elements.cmd est le point d’entrée Windows en fichier unique. À l’exécution, il essaie py -3, python puis python3 ; si Python est disponible, il extrait le code Python intégré depuis le fichier .cmd vers un fichier .py temporaire, puis l’exécute. Si Python n’est pas disponible, il bascule vers la logique PowerShell intégrée, écrit la section PowerShell dans un fichier .ps1 temporaire, puis exécute ce fichier.
Lorsque le fichier .cmd est ouvert sans argument, la fenêtre demande le chemin d’un fichier .pptx. Il est également possible de faire glisser un fichier PPTX directement sur le fichier .cmd.
extract_pptx_elements.cmd presentation.pptxLe point d’entrée Windows prend en charge les mêmes options courantes que le script Python :
extract_pptx_elements.cmd presentation.pptx --no-text
extract_pptx_elements.cmd presentation.pptx --media-only
extract_pptx_elements.cmd presentation.pptx --overwrite
extract_pptx_elements.cmd presentation.pptx -o my_assets# Extraire toutes les ressources prises en charge depuis un fichier PPTX
python3 extract_pptx_elements.py presentation.pptx
# Extraire vers un dossier de sortie personnalisé
python3 extract_pptx_elements.py presentation.pptx -o my_assets
# Extraire uniquement les images, les vidéos et l’audio
python3 extract_pptx_elements.py presentation.pptx --media-only
# Désactiver l’export du texte visible des diapositives
python3 extract_pptx_elements.py presentation.pptx --no-text
# Écraser les fichiers de sortie existants
python3 extract_pptx_elements.py presentation.pptx --overwrite
# Traiter tous les fichiers .pptx non temporaires du dossier courant
python3 extract_pptx_elements.pyPar défaut, le dossier de sortie est créé à côté du fichier PPTX et porte le nom pptx_extracted_elements/. Lorsque plusieurs fichiers PPTX sont traités en une seule fois, chaque fichier reçoit son propre sous-dossier.
pptx_extracted_elements/
├── 图片/
│ ├── presentation_001.jpg
│ ├── presentation_001_02.jpg
│ └── presentation_002.png
├── 视频/
│ └── presentation_002.mp4
├── 图表/
│ └── presentation_003.xml
├── 文本/
│ └── presentation_003.txt
└── manifest.csv
Lors du traitement de plusieurs fichiers PPTX :
pptx_extracted_elements/
├── presentation1/
│ ├── 图片/
│ │ └── presentation1_001.jpg
│ └── manifest.csv
└── presentation2/
├── 图片/
│ └── presentation2_001.png
└── manifest.csv
| Champ | Description |
|---|---|
slide |
Numéro de diapositive à trois chiffres |
output_file |
Chemin relatif du fichier de sortie |
kind |
Type de ressource, par exemple image, video, audio, chart ou diagram |
source_part |
Partie XML interne du PPTX qui contient la relation |
target_part |
Chemin interne de la ressource cible dans le PPTX |
relationship_id |
Identifiant XML de la relation |
relationship_type |
URI complète du type de relation |
Un fichier PowerPoint .pptx est un paquet ZIP contenant des fichiers XML, des fichiers de relations et des ressources multimédias. Le processus d’extraction est le suivant :
- Ouvrir le fichier
.pptxcomme paquet ZIP - Lire
ppt/presentation.xmlet ses relations pour déterminer l’ordre des diapositives - Parcourir l’arbre des relations de chaque diapositive afin d’identifier les images, vidéos, fichiers audio, graphiques, diagrammes et objets intégrés
- Copier les ressources dans des dossiers de type en chinois
- Générer les noms de fichiers avec un préfixe basé sur le numéro de diapositive
- Extraire le texte visible par défaut ; désactiver l’export avec
--no-text - Écrire
manifest.csvavec la correspondance des sources
Le dossier scripts/ a été supprimé. Il ne contenait que des scripts optionnels de construction PyInstaller, qui ne font pas partie du chemin d’exécution et ne sont pas nécessaires pour l’utilisation finale.
Points d’entrée recommandés :
- Python :
extract_pptx_elements.py - macOS :
extract_pptx_elements.command - Windows :
extract_pptx_elements.cmd
Si les mainteneurs doivent générer un fichier .exe ou un paquet binaire, ils peuvent exécuter PyInstaller directement sur le système d’exploitation cible. Ce processus relève de la publication et n’affecte pas l’utilisation quotidienne des lanceurs.
restore_pptx_elements est le compagnon de l’extracteur : il réécrit les médias extraits (et éventuellement modifiés) dans le PPTX, à leur emplacement d’origine. Le cas d’usage typique est la retouche par lot des images — par exemple le retrait d’un filigrane — puis la reconstruction en un clic d’un nouveau PPTX dont la mise en page est identique à l’original.
Pourquoi les positions ne changent jamais : la position et la taille d’un élément sont stockées dans le XML de la diapositive (<a:off> / <a:ext>), pas dans les octets de l’image. Lors de la restauration, cet outil ne remplace que les octets de chaque média et ne touche jamais au moindre XML ; chaque élément conserve donc exactement sa position d’origine. C’est une garantie stricte pour les images, et elle se vérifie en pratique pour tous les autres éléments. Même si une image corrigée a une taille en pixels ou un format différent, sa position sur la diapositive ne change pas (PowerPoint la redimensionne dans le cadre de mise en page d’origine).
Déroulement :
- Extraire d’abord :
extract_pptx_elements.py "deck.pptx"→ produitpptx_extracted_elements/ - Retoucher les images par lot dans
图片/(en conservant les noms de fichiers) - Restaurer :
restore_pptx_elements.py→ produitdeck_restored.pptx
Le restaurateur lit manifest.csv pour localiser la partie exacte de chaque image dans le PPTX et la réécrit dans une copie du fichier d’origine (l’original n’est jamais modifié).
Points d’entrée et prérequis :
| Point d’entrée | Prérequis |
|---|---|
restore_pptx_elements.py |
Python 3.8+ |
restore_pptx_elements.command |
macOS + Python 3 |
restore_pptx_elements.cmd |
Windows ; utilise Python 3 en priorité, puis bascule vers PowerShell 5.1+ intégré (sans Python) |
Utilisation sur macOS : placez restore_pptx_elements.command à côté du PPTX d’origine et du dossier pptx_extracted_elements/, puis double-cliquez pour une restauration en un clic. Vous pouvez aussi glisser le dossier extrait dans la fenêtre.
Utilisation sur Windows : placez restore_pptx_elements.cmd à côté du PPTX d’origine et du dossier pptx_extracted_elements/, puis double-cliquez pour une restauration en un clic ; vous pouvez aussi glisser le dossier extrait sur le .cmd. Comme l’extracteur, le .cmd intègre à la fois une implémentation Python (préférée) et une solution de secours PowerShell, sans installation supplémentaire.
Utilisation du script Python :
# Exécuter à côté du dossier extrait ; détecte automatiquement les médias et le PPTX d’origine
python3 restore_pptx_elements.py
# Indiquer un dossier extrait précis
python3 restore_pptx_elements.py pptx_extracted_elements
# Indiquer le PPTX d’origine et le nom de sortie
python3 restore_pptx_elements.py pptx_extracted_elements --pptx deck.pptx -o deck_fixed.pptx
# Ne réécrire que les images, en laissant tous les autres éléments intacts
python3 restore_pptx_elements.py --images-only
# Aperçu sans écrire de fichier
python3 restore_pptx_elements.py --dry-runOptions courantes :
| Option | Description |
|---|---|
--pptx FICHIER |
PPTX d’origine ; détecté automatiquement depuis le manifeste par défaut |
-o FICHIER |
PPTX de sortie ; par défaut <nom>_restored.pptx |
--images-only |
Ne réécrire que les images |
--media-only |
Ne réécrire que les images, vidéos et fichiers audio |
--overwrite |
Écraser un fichier de sortie existant |
--dry-run |
Aperçu sans écriture |
Le restaurateur ne remplace que les parties dont le contenu a réellement changé : les médias identiques à l’original sont ignorés, et pour une image partagée par plusieurs diapositives, il suffit d’en modifier une seule copie. Si plusieurs copies de la même partie sont modifiées différemment, la restauration s’arrête et signale le conflit.
Voir les notes de version par édition dans le dossier docs/.
MIT