Base64를 PowerPoint 파일로 디코딩하는 방법
- Base64 또는 data URI에 Base64를 붙여넣으세요.
data:application/vnd.openxmlformats-officedocument.presentationml.presentation;base64,접두사가 있어도 되며, 텍스트로 저장된 긴 문자열은 .txt 파일 열기로 처리할 수 있습니다. - 슬라이드 텍스트에 모든 슬라이드가 번호(슬라이드 1, 슬라이드 2 등) 아래에 나열되며, 문단마다 한 줄씩 표시됩니다. 텍스트가 없는 슬라이드는
…로 표시됩니다. - 그 아래 항목 목록에 파일의 모든 파트가 보기와 저장 버튼과 함께 나옵니다.
- 파일 다운로드를 눌러 .pptx를 저장하세요.
텍스트는 브라우저의 XML 파서로 슬라이드 XML에서 추출합니다. 프레젠테이션 안의 어떤 것도 실행되지 않으며, 페이지는 Cloudflare 조회수 집계 외에는 네트워크 요청을 보내지 않습니다.
슬라이드 텍스트에 포함되는 것
각 슬라이드는 .pptx 안의 별도 XML 파일이며, 미리보기는 그 안의 모든 문단 텍스트를 가져옵니다. 제목, 본문 개체 틀, 텍스트 상자, 도형, 그룹 도형, 표 셀이 포함됩니다. 숨김 슬라이드도 포함되며, 최대 200개 슬라이드까지 읽습니다.
다른 곳에 저장된 내용은 나타나지 않습니다.
| 내용 | 저장 위치 | 보는 방법 |
|---|---|---|
| 발표자 노트 | ppt/notesSlides/notesSlideN.xml | 보기로 XML 표시 |
| SmartArt 텍스트 | ppt/diagrams/dataN.xml | 보기로 XML 표시 |
| 차트 | ppt/charts/chartN.xml, 숫자는 포함된 통합 문서에 | ppt/embeddings/의 .xlsx를 저장 |
| 그림과 동영상 | ppt/media/ | 보기로 미리 보고 저장으로 다운로드 |
| 메모 | ppt/comments/ | 보기로 XML 표시 |
슬라이드는 파일 이름의 번호, 즉 slide1.xml, slide2.xml 순서로 나열됩니다. 보통은 발표 자료의 순서와 같지만, 스크립트로 순서를 바꾼 프레젠테이션은 예전 파일 번호를 유지할 수 있으므로 번호는 참고용으로만 보세요.
PPTX가 맞는지 확인하기
모든 Office Open XML 파일은 ZIP 압축 파일이므로, PowerPoint 발표 자료도 Word 문서나 Excel 통합 문서처럼 Base64가 UEsDB로 시작합니다. 도구는 항목 중에서 ppt/ 폴더를 찾아 이들을 구별합니다. 내용이 다른 형식이면 안내가 그 사실을 알리고 올바른 확장자를 제안합니다.
| 감지 결과 | 안내 |
|---|---|
| DOCX 또는 XLSX | .docx(으)로 다운로드와 함께 “PPTX이(가) 아니라 DOCX(으)로 보입니다.” |
PDF (JVBERi0) | PDF로 내보낸 발표 자료, .pdf(으)로 다운로드 제공 |
DOC/XLS/MSG (OLE), 0M8R4KGxGuE | PowerPoint 97–2003의 레거시 .ppt 또는 비밀번호로 보호된 .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> 요소에 있습니다. 자세한 내용은 Python에서 Base64에 있고, 압축 파일 쪽은 Base64를 ZIP으로에서 다룹니다.
자주 묻는 질문
Base64를 PowerPoint 파일로 바꾸려면 어떻게 하나요?
위에 문자열을 붙여넣고 파일 다운로드를 누르세요. 프레젠테이션은 decoded.pptx로 저장되며, 다른 이름을 원하면 먼저 파일 이름을 바꾸세요.
발표자 노트도 표시되나요?
슬라이드 텍스트에는 나오지 않습니다. 노트는 ppt/notesSlides/notesSlide1.xml 등에 저장되어 있으므로, 항목 목록에서 해당 파일 옆의 보기를 눌러 XML을 읽으세요. 텍스트는 <a:t> 요소 안에 있습니다.
슬라이드를 그림으로 볼 수 있나요?
아니요. 페이지는 슬라이드의 텍스트만 읽고 그리지는 않습니다. 발표 자료에 쓰인 그림은 항목 목록의 ppt/media/에서 하나씩 보고 저장할 수 있습니다.