Python에서 프레젠테이션을 저장하는 방법

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
PDFN/A아니오
HTMLN/A아니오
SVGN/A아니오
PNG / JPEGN/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은 그대로 전달합니다.


또 보기

 한국어