PPTX는 ZIP 안에 슬라이드 XML, 이미지, 차트와 Excel 데이터를 나눠 담는 패키지 형식
- PPTX 파일은 여러 개의 개별 파일을 담은 ZIP 패키지이며, 프레젠테이션의 속성과 자산을 파일별로 분리해 저장함
- 슬라이드는 텍스트 상자, 도형, 그림, 표, 차트의 위치와 크기, 글꼴, 색상 같은 렌더링 속성을 기록해 화면 구성을 재현함
- 같은 로고를 여러 슬라이드에서 쓸 때는 이미지 파일 하나를 저장하고 각 슬라이드가 이를 참조하는 방식으로 자산 중복을 피함
- 차트는 슬라이드 배치 정보, 차트 속성, 숫자 데이터를 분리하며, 숫자 데이터는 임베디드 XLSX 파일로 저장할 수 있음
- 차트에는 축, 눈금선, 계열 채우기 색 등 속성이 매우 많아 차트별 파일로 옮기고 슬라이드에서 참조하는 구조를 사용함
Hacker News opinions
PPTX가 ZIP 안에 XML과 바이너리 자산을 넣는 구조라는 걸 잘 풀어낸 글임. 속성을 파일별로 나눠 중복을 줄이고 찾기 쉽게 만든다는 설명도 좋았음.
이건 PPTX만의 얘기가 아니라 XLSX, DOCX 등 확장자 끝에 x가 붙는 MS Office 형식 전반에 해당함.
팀에서 프레젠테이션을 표준화하려는데 Claude가 만든 비정형 슬라이드가 늘어서 골치 아픔. 예전 PM의 일회성 자료보다 훨씬 낫긴 한데, 리더십에 같은 정보를 전달하는 방식이 80개나 됨.
마스터와 레이아웃이 늘어나는 게 제일 큰 문제임. 표지, 섹션 구분, 제목 정도만 넣은 최소 템플릿에 슬라이드 크기, 글꼴, 색을 고정하고, 나중에 정리하기 쉬운 상태로 시작하는 편이 나음.
나는 모든 발표 자료를 같은 모양으로 맞추는 데 드는 비용이 이득보다 크다고 봄. 발표자별 스타일이 조금씩 달라야 연속 발표를 볼 때 덜 지루하고 집중도 더 잘됨.
PowerPoint 템플릿 시스템 자체가 형편없음. 처음부터 템플릿을 만들면 의미가 다른 여러 스타일이 얽혀 있고, 다른 템플릿에서 만든 슬라이드를 붙여 넣어 새 템플릿 스타일을 적용하기가 유난히 어려움.
작년에 PPTX를 풀어 봤는데, 편집 제한 암호만 걸린 파일은 자산과 3D 모델이 암호화되지 않은 채 들어 있었음. 다시 압축하면 암호 없는 파일로 만들 수도 있었음.
그건 편집 제한 암호의 경우임. 그 방식은 원래 강제할 수 없는 명예 규칙에 가까워서, 실제 암호화 보호와 같다고 보면 안 됨.
Word 문서에서 이미지를 뽑으려고 2015년에 확장자를 ZIP으로 바꿔 봤고 media 폴더를 발견했음. 그 뒤로 여러 확장자를 ZIP으로 바꿔 봤는데 대부분 열리더라.
7-Zip은 확장자보다 매직 바이트를 보고 여러 형식을 열 수 있음. 파일 내부를 확인하려면 유닉스의 file 명령이 쓰는 libmagic 쪽이 더 확실함.
옛 PPT는 객체를 넣은 OLE 의사 파일시스템이었고, 새 PPT는 ZIP 파일임.
DOCX, PPTX 같은 OOXML 형식은 2006년 12월부터 있었음. 이제 거의 20년 된 형식임.
기업 템플릿과 자산을 정확히 따르는 PPTX 생성은 AI 기능 요청 중에서도 많이 보이는 편임. Claude의 스킬 기능도 꽤 근접하지만, 손으로 고치는 시간이 처음부터 만드는 시간과 거의 비슷함.
OOXML은 몹시 복잡하지만 LLM이 실용적인 수준으로는 작성하더라. PNG 슬라이드를 ChatGPT에 넣고 텍스트 상자, 프레임, 이미지를 각각 편집 가능한 객체로 분리한 PPTX를 만들어 달라고 했더니 실제 편집 가능한 파일이 나왔음.
ChatGPT가 XML을 직접 쓴 게 아니라 LibreOffice를 헤드리스로 다루는 스킬과 파이썬 스크립트를 쓴 것임. Office 문서용 렌더러도 요즘 꽤 정교해졌고.
예전에 PPT를 코드로 생성해 봤는데 권하고 싶지 않음. LLM이 생긴 지금은 좀 나아졌을지도 모르겠음.