Java에서 프레젠테이션을 저장하는 방법
Aspose.Slides FOSS for Java saves presentations exclusively to .pptx 형식을 사용하여 prs.save(path, SaveFormat.PPTX). 이 가이드는 올바른 저장 패턴, 다른 경로에 저장, 그리고 일반적인 저장 관련 오류를 다룹니다.
단계별 가이드
1단계: Maven 의존성 추가
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>단계 2: 프레젠테이션 열기 또는 만들기
항상 try-with-resources를 사용하세요. 저장 호출은 try 블록 안에서 이루어져야 합니다.
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
// Create new
try (Presentation prs = new Presentation()) {
prs.save("new.pptx", SaveFormat.PPTX);
}
// Open existing
try (Presentation prs = new Presentation("input.pptx")) {
prs.save("output.pptx", SaveFormat.PPTX);
}단계 3: 모든 수정 후 저장
다음 항목을 배치하십시오 save() 수정이 모두 완료된 후, try 블록 내부의 마지막 문장으로 호출합니다.
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0);
IAutoShape shape = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 50, 50, 300, 100
);
shape.addTextFrame("Hello, World!");
prs.save("output.pptx", SaveFormat.PPTX);
}단계 4: 다른 경로에 저장
원본을 수정하지 않고 새 파일을 만들기 위해 다른 출력 경로를 전달합니다:
try (Presentation prs = new Presentation("template.pptx")) {
// modify ...
prs.save("customized.pptx", SaveFormat.PPTX);
}다음 template.pptx 파일이 수정되지 않았습니다; customized.pptx 생성됩니다(이미 존재하는 경우 덮어쓰기됩니다).
단계 5: 출력 확인
try 블록이 종료되면 파일이 완성되고 닫힙니다. 파일이 존재하는지 확인하세요:
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
Path output = Paths.get("output.pptx");
System.out.println("Saved: " + Files.exists(output)
+ ", size: " + Files.size(output) + " bytes");지원되는 저장 형식
| 형식 | 열거형 값 | 지원됨 |
|---|---|---|
| PPTX (Office Open XML) | SaveFormat.PPTX | 예 |
| N/A | 아니오 | |
| HTML | N/A | 아니오 |
| SVG | N/A | 아니오 |
| PNG / JPEG | N/A | 아니오 |
| ODP (OpenDocument) | N/A | 아니오 |
PPTX만 완전히 지원됩니다. 다른 형식을 전달하면 SaveFormat 값을 prs.save(path, format) 조용히 PPTX로 저장됩니다 — 예외가 발생하지 않고 형식 인자는 무시됩니다. UnsupportedOperationException 는 오직 다음에 의해 발생합니다 prs.save(ISaveOptions options), 형식 기반 오버로드에서는 발생하지 않습니다.
일반적인 문제 및 해결책
java.io.IOException: Permission denied
출력 파일이 다른 애플리케이션에서 열려 있습니다(예: PowerPoint가 파일을 열고 있음). 저장하기 전에 다른 애플리케이션에서 파일을 닫으세요.
파일이 생성되었지만 비어 있거나 손상된 것으로 보입니다
확인하십시오 prs.save() 는 try 블록 내부에서 호출되어야 하며, 그 이후에 호출해서는 안 됩니다. try-with-resources 블록이 종료된 후에, Presentation 객체가 해제되며 이후 호출은 실패합니다.
UnsupportedOperationException 저장할 때
이는 다음을 사용할 때 발생합니다 prs.save(ISaveOptions options) — the ISaveOptions-based 오버로드가 구현되지 않았습니다. 참고: 비-PPTX를 전달하는 경우 SaveFormat 에 prs.save(path, format) 한다 않습니다 이 예외를 발생시키지 않습니다; 조용히 PPTX로 저장됩니다.
자주 묻는 질문
열었던 파일에 그대로 저장할 수 있나요?
예. 동일한 경로에 저장하면 원본 파일이 덮어쓰기됩니다:
try (Presentation prs = new Presentation("deck.pptx")) {
// modify ...
prs.save("deck.pptx", SaveFormat.PPTX); // overwrites original
}OutputStream에 저장할 수 있나요?
예. The save() 메서드는 an을 받아들입니다. OutputStream:
import java.io.FileOutputStream;
try (Presentation prs = new Presentation();
FileOutputStream fos = new FileOutputStream("output.pptx")) {
prs.save(fos, SaveFormat.PPTX);
}저장 시 수정하지 않은 내용이 보존되나요?
예. 원본 파일의 알 수 없는 XML 파트는 그대로 보존됩니다. 라이브러리는 이해하는 문서 모델의 파트만 직렬화하고, 인식하지 못하는 XML은 그대로 전달합니다.