Python에서 프레젠테이션을 저장하는 방법
Aspose.Slides FOSS for Python saves presentations exclusively to .pptx 형식 사용 prs.save(path, SaveFormat.PPTX). 이 가이드는 올바른 저장 패턴, 다른 경로에 저장, 그리고 일반적인 저장 관련 오류를 다룹니다.
단계별 가이드
단계 1: 패키지 설치
pip install aspose-slides-foss단계 2: 프레젠테이션 열기 또는 만들기
항상 컨텍스트 매니저를 사용하세요. 저장 호출은 내부에서 이루어져야 합니다. with 블록.
import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat
# Create new
with slides.Presentation() as prs:
prs.save("new.pptx", SaveFormat.PPTX)
# Open existing
with slides.Presentation("input.pptx") as prs:
prs.save("output.pptx", SaveFormat.PPTX)단계 3: 블록 끝에서 저장 with 블록
다음을 save() 호출을 블록 내부의 마지막 문장으로 with 블록에, 모든 수정이 완료된 후.
import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat
with slides.Presentation() as prs:
slide = prs.slides[0]
shape = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 300, 100)
shape.add_text_frame("Hello, World!")
prs.save("output.pptx", SaveFormat.PPTX)단계 4: 다른 경로에 저장하기
원본을 수정하지 않고 새 파일을 만들려면 다른 출력 경로를 전달하세요:
with slides.Presentation("template.pptx") as prs:
# modify ...
prs.save("customized.pptx", SaveFormat.PPTX)파일 template.pptx 파일은 수정되지 않았습니다; customized.pptx 생성됩니다(이미 존재하면 덮어씁니다).
단계 5: 출력 확인하기
이후 with 블록이 종료되면 파일이 완성되고 닫힙니다. 존재 여부를 확인하세요:
import os
from pathlib import Path
output = Path("output.pptx")
print(f"Saved: {output.exists()}, size: {output.stat().st_size} bytes")지원되는 저장 형식
| 포맷 | Enum Value | 지원 |
|---|---|---|
| PPTX (Office Open XML) | SaveFormat.PPTX | 예 |
| N/A | 아니오 | |
| HTML | N/A | 아니오 |
| SVG | N/A | 아니오 |
| PNG / JPEG | N/A | 아니오 |
| ODP (OpenDocument) | N/A | 아니오 |
PPTX만 지원됩니다. 다른 형식으로 저장을 시도하면 NotImplementedError 또는 지원되지 않는 형식 오류가 발생합니다.
일반적인 문제 및 해결책
PermissionError: [Errno 13] Permission denied
출력 파일이 다른 애플리케이션에서 열려 있습니다(예: PowerPoint에서 파일이 열려 있음). 저장하기 전에 다른 애플리케이션에서 파일을 닫으세요.
파일이 생성되었지만 비어 있거나 손상된 것으로 보입니다.
확인하십시오 prs.save() 은 내부에서 호출됩니다 with 블록, 그 이후가 아니라. 그 후에 with 블록이 종료되면, Presentation 객체가 해제되며 이후 호출은 조용히 실패하거나 오류를 발생시킵니다.
NotImplementedError 저장할 때
이는 PPTX가 아닌 다른 형식으로 저장을 시도하거나, 저장 중에 지원되지 않는 기능(예: 차트나 애니메이션)을 사용할 때 발생합니다.
자주 묻는 질문
열었던 파일에 그대로 저장할 수 있나요?
예. 동일한 경로에 저장하면 원본 파일이 덮어쓰기됩니다:
with slides.Presentation("deck.pptx") as prs:
# modify ...
prs.save("deck.pptx", SaveFormat.PPTX) # overwrites original파일 대신 바이트 버퍼에 저장할 수 있나요?
예. 전달하십시오 io.BytesIO 객체를 직접 prs.save() — 어떤 것이든 허용합니다 BinaryIO 대상:
import io
import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat
buf = io.BytesIO()
with slides.Presentation() as prs:
# ... modify presentation ...
prs.save(buf, SaveFormat.PPTX)
pptx_bytes = buf.getvalue()저장할 때 수정하지 않은 내용이 보존되나요?
예. 원본 파일의 알 수 없는 XML 파트는 그대로 보존됩니다. 이 라이브러리는 문서 모델에서 이해하는 부분만 직렬화하고, 인식하지 못하는 XML은 그대로 전달합니다.