Как декодировать Base64 в файл PowerPoint
- Вставьте Base64 в поле Base64 или data URI. Префикс
data:application/vnd.openxmlformats-officedocument.presentationml.presentation;base64,не мешает, а Открыть файл .txt справляется с длинными строками, сохранёнными как текст. - Блок Текст слайдов перечисляет все слайды под их номерами («Слайд 1», «Слайд 2» и так далее), каждый абзац на отдельной строке. Слайд без текста показан как
…. - Ниже в списке элементов видны все части файла с кнопками Открыть и Сохранить.
- Нажмите Скачать файл, чтобы сохранить .pptx.
Текст извлекается из XML слайдов встроенным XML-парсером браузера. Ничего из презентации не выполняется, а страница не отправляет сетевых запросов, кроме счётчика просмотров Cloudflare.
Что входит в текст слайдов
Каждый слайд хранится в отдельном XML-файле внутри .pptx, и превью берёт из него текст каждого абзаца: заголовки, заполнители основного текста, надписи, фигуры, сгруппированные фигуры и ячейки таблиц. Скрытые слайды тоже учитываются. Читается до 200 слайдов.
То, что хранится в других местах, не показывается:
| Содержимое | Где лежит | Как до него добраться |
|---|---|---|
| Заметки докладчика | ppt/notesSlides/notesSlideN.xml | Открыть покажет XML |
| Текст SmartArt | ppt/diagrams/dataN.xml | Открыть покажет XML |
| Диаграммы | ppt/charts/chartN.xml, а числа хранятся во встроенной книге | Сохранить встроенный .xlsx из ppt/embeddings/ |
| Картинки и видео | ppt/media/ | Открыть покажет превью, Сохранить скачает |
| Примечания | ppt/comments/ | Открыть покажет XML |
Слайды перечислены по номеру в имени файла: slide1.xml, slide2.xml и так далее. Обычно это и есть порядок презентации, но в презентации, переставленной скриптом, могут остаться старые номера файлов, так что считайте нумерацию ориентиром.
Как проверить, что это PPTX
Любой файл Office Open XML упакован в ZIP, поэтому презентация PowerPoint начинается в Base64 с UEsDB, как и документ Word или книга Excel. Чтобы их различить, инструмент ищет среди элементов папки ppt/. Если содержимое в другом формате, подсказка скажет об этом и предложит правильное расширение:
| Определено | Подсказка |
|---|---|
| DOCX или XLSX | «Похоже на DOCX, а не на PPTX.» с кнопкой Скачать как .docx |
PDF (JVBERi0) | Презентация, экспортированная в PDF, с кнопкой Скачать как .pdf |
DOC/XLS/MSG (OLE), 0M8R4KGxGuE | Старый .ppt из PowerPoint 97–2003 или .pptx с паролем. Инструмент не может их различить, поэтому для первого впишите ppt в поле Расширение, а для второго оставьте pptx |
Презентация с макросами (.pptm) содержит ppt/vbaProject.bin. Её текст показывается как обычно, но PowerPoint откроет её только с расширением .pptm, так что впишите его перед скачиванием.
Как прочитать текст слайдов на Python
Чтобы вывести текст по слайдам в том же порядке, что и превью, хватит стандартной библиотеки:
import base64, io, re, zipfile
import xml.etree.ElementTree as ET
A = "{http://schemas.openxmlformats.org/drawingml/2006/main}"
with open("deck.b64") as f:
pptx = base64.b64decode(f.read())
with zipfile.ZipFile(io.BytesIO(pptx)) as z:
slides = [n for n in z.namelist() if re.fullmatch(r"ppt/slides/slide\d+\.xml", n)]
slides.sort(key=lambda n: int(re.search(r"\d+", n).group()))
for name in slides:
root = ET.fromstring(z.read(name))
lines = ["".join(t.text or "" for t in p.iter(A + "t")) for p in root.iter(A + "p")]
print(name, [s for s in lines if s.strip()])
Для примера презентации на этой странице скрипт выведет ppt/slides/slide1.xml ['Hello from Base64', 'A two-slide deck built in your browser.'] и то же для слайда 2. Если нужен точный порядок слайдов, он записан в ppt/presentation.xml, в элементе <p:sldIdLst>. Подробнее в статье Base64 в Python, а про архивы рассказано на странице Base64 в ZIP.
Вопросы и ответы
Как превратить Base64 в файл PowerPoint?
Вставьте строку в поле выше и нажмите Скачать файл. Презентация сохранится как decoded.pptx; если нужно другое имя, сначала поменяйте Имя файла.
Показываются ли заметки докладчика?
В блоке текста слайдов их нет. Заметки хранятся в ppt/notesSlides/notesSlide1.xml и так далее; нажмите Открыть рядом с нужным файлом в списке элементов, чтобы прочитать его XML, где текст лежит в элементах <a:t>.
Можно ли увидеть слайды картинками?
Нет. Страница читает только текст слайдов и не отрисовывает их. Картинки из презентации можно по одной посмотреть и сохранить из ppt/media/ в списке элементов.