Java에서 프레젠테이션 저장 방법
Aspose.Slides FOSS for Java는 프레젠테이션을 .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>Step 2: 프레젠테이션 열기 또는 만들기
항상 try-with-resources를 사용하십시오. 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;
// 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단계: 모든 수정 후 저장
수정이 모두 완료된 후, try 블록 내부의 마지막 문장으로 save() 호출을 배치하십시오.
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");지원되는 저장 형식
| Format | Enum Value | Supported |
|---|---|---|
| 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)을 사용할 때 발생합니다 — ISaveOptions 기반 오버로드가 구현되지 않았습니다. 참고: 비-PPTX SaveFormat를 prs.save(path, format)에 전달해도 이 예외를 발생시키지 않으며; PPTX로 조용히 저장됩니다.
자주 묻는 질문
열어둔 파일에 같은 파일로 저장할 수 있나요?
예. 동일한 경로에 저장하면 원본 파일이 덮어쓰기됩니다:
try (Presentation prs = new Presentation("deck.pptx")) {
// modify ...
prs.save("deck.pptx", SaveFormat.PPTX); // overwrites original
}OutputStream에 저장할 수 있나요?
예. save() 메서드는 OutputStream을(를) 받아들입니다:
import java.io.FileOutputStream;
try (Presentation prs = new Presentation();
FileOutputStream fos = new FileOutputStream("output.pptx")) {
prs.save(fos, SaveFormat.PPTX);
}저장하면 수정하지 않은 내용이 보존되나요?
예. 원본 파일의 알 수 없는 XML 부분은 그대로 보존됩니다. 라이브러리는 이해하는 문서 모델의 부분만 직렬화하고, 인식하지 못하는 XML은 그대로 전달합니다.