AI로 만든 PPT의 16:9 규격 함정과 정정법
요약
python-pptx로 자동 생성한 발표자료는 슬라이드 크기를 13.333×7.5인치로 지정해도 파일 내부에 4:3 표식이 남는다. PowerPoint에서는 멀쩡히 와이드스크린으로 보이지만, 다른 뷰어나 행사장 장비가 4:3 또는 사용자 지정 크기로 읽을 수 있다. 전남광주 시민주권 공동체 자산 형성 컨퍼런스 발표자료(2026.10.1 KEA-REN21)에서 실제로 걸린 문제이며, 정수 EMU 값과 크기 유형 태그를 함께 고치면 해결된다.
왜 이 기술인가
AI와 함께 문서를 만들 때 “겉으로 보이는 결과”와 “파일 규격”이 다를 수 있다. 발표 현장은 규격에 민감하다. 주최측이 16:9를 요구했는데 장비가 4:3으로 읽으면 좌우 검은 띠가 생기거나 글자가 잘린다. 발표 직전에 발견하면 손쓸 시간이 없으므로, 생성 단계에서 규격을 확정하고 검증하는 습관이 필요하다.
단계별 따라하기
1. 증상 확인
PPTX는 zip 파일이다. 압축을 풀지 않고도 슬라이드 크기 태그를 볼 수 있다.
unzip -p 발표자료.pptx ppt/presentation.xml | grep -o '<p:sldSz[^>]*>'문제가 있는 파일은 이렇게 나온다.
<p:sldSz cx="12191695" cy="6858000" type="screen4x3"/>두 가지가 어긋나 있다.
| 항목 | 잘못된 값 | 표준 16:9 값 |
|---|---|---|
| 폭(cx) | 12191695 | 12192000 |
| 유형(type) | screen4x3 | screen16x9 |
폭이 305 EMU 짧은 이유는 Inches(13.333)을 EMU로 바꾸면 12191695가 되기 때문이다. 유형이 4:3인 이유는 python-pptx 기본 템플릿이 4:3이고, 크기만 바꿔도 유형 태그는 그대로 남기 때문이다.
2. 정정 스크립트
기존 파일을 열어 크기와 유형을 고치고, 슬라이드 전폭을 차지하던 배경 도형의 폭도 함께 넓힌다. 그대로 두면 오른쪽에 머리카락 굵기의 빈 줄이 생길 수 있다.
from pptx import Presentation
from pptx.oxml.ns import qn
p = Presentation('원본.pptx')
old_w = p.slide_width
W, H = 12192000, 6858000
p.slide_width, p.slide_height = W, H
p.part._element.find(qn('p:sldSz')).set('type', 'screen16x9')
for s in p.slides:
for sh in s.shapes:
if sh.left == 0 and sh.width == old_w:
sh.width = W
p.save('원본_16x9.pptx')3. 검증
PowerPoint가 설치돼 있으면 COM으로 열어 크기를 읽고 PNG로 렌더해 레이아웃이 깨지지 않았는지 본다. 이때 PageSetup.SlideSize 값은 믿지 말 것. 기본 와이드스크린 새 문서도 7(사용자 지정)을 돌려준다. 대신 SlideWidth와 SlideHeight가 960×540pt인지, 그리고 XML 태그가 바뀌었는지를 본다.
$app = New-Object -ComObject PowerPoint.Application
$pres = $app.Presentations.Open($deck, $true, $false, $false)
"$($pres.PageSetup.SlideWidth) x $($pres.PageSetup.SlideHeight)"
$pres.Export($outDir, "PNG", 1600, 900)
$pres.Close(); $app.Quit()4. 생성 단계에서 막기
새 문서를 만드는 코드에서 처음부터 정수 EMU와 유형 태그를 지정한다. 사교원의 강의안 빌더(pptx-lecture-deck 스킬)는 이 방식으로 고쳤다.
prs = Presentation()
prs.slide_width, prs.slide_height = 12192000, 6858000
prs.part._element.find(qn('p:sldSz')).set('type', 'screen16x9')교훈
- 보이는 것과 규격은 다르다. PowerPoint에서 정상이어도 파일 태그가 틀릴 수 있다. 제출 전 XML 한 줄을 확인하는 데 10초면 된다.
- 라이브러리 기본값을 의심하라. 크기를 바꿨다고 유형까지 바뀌지는 않는다. 기본 템플릿이 무엇인지 알아야 한다.
- 판별 지표는 검증하고 쓴다. COM의 SlideSize처럼 그럴듯한 값이 실제로는 구분을 못 하는 경우가 있다. 새 문서와 대조해 지표의 신뢰도를 먼저 확인한다.
- 정정은 새 파일로. 원본은 구판으로 남기고 정정판에
_16x9같은 표식을 붙여 어느 것이 캐노니컬인지 분명히 한다.
참고
- 대상 문서: 전남광주 통합특별시 인수위원회 논의 「시민주권 공동체 자산 형성」 사업 구상 발표자료 19장 (2026.10.1 KEA-REN21 커뮤니티 에너지 국제 컨퍼런스)
- python-pptx 문서: Presentation.slide_width / slide_height
- OOXML 규격:
p:sldSz의type속성값(screen4x3, screen16x9, screen16x10 등) - 관련 문서: 전남광주-공론장
- 문서 정리 = 데카(deka2026)