JavaScript에서 프레젠테이션 열기

소개

PowerPoint 프레젠테이션을 처음부터 만드는 것 외에도, Aspose.Slides는 기존 프레젠테이션을 열 수 있습니다. 프레젠테이션을 로드한 후에는 해당 정보를 검색하고, 슬라이드 내용을 편집하고, 새 슬라이드를 추가하고, 기존 슬라이드를 제거하는 등 다양한 작업을 수행할 수 있습니다.

프레젠테이션 열기

기존 프레젠테이션을 열려면, Presentation 클래스를 인스턴스화하고 파일 경로를 생성자에 전달합니다.

다음 JavaScript 예제는 프레젠테이션을 열고 슬라이드 수를 가져오는 방법을 보여줍니다:

// Presentation 클래스를 인스턴스화하고 파일 경로를 생성자에 전달합니다.
let presentation = new aspose.slides.Presentation("Sample.pptx");
try {
    // 프레젠테이션의 총 슬라이드 수를 출력합니다.
    console.log(presentation.getSlides().size());
} finally {
    presentation.dispose();
}

비밀번호로 보호된 프레젠테이션 열기

비밀번호로 보호된 프레젠테이션을 열어야 할 경우, LoadOptions 클래스의 setPassword 메서드를 통해 비밀번호를 전달하여 복호화하고 로드합니다. 다음 JavaScript 코드는 이 작업을 보여줍니다:

let loadOptions = new aspose.slides.LoadOptions();
loadOptions.setPassword("YOUR_PASSWORD");

let presentation = new aspose.slides.Presentation("Sample.pptx", loadOptions);
try {
    // 복호화된 프레젠테이션에 대한 작업을 수행합니다.
} finally {
    presentation.dispose();
}

대용량 프레젠테이션 열기

Aspose.Slides는 특히 LoadOptions 클래스의 getBlobManagementOptions 메서드를 통해 대용량 프레젠테이션을 로드하는 데 도움이 되는 옵션을 제공합니다.

다음 JavaScript 코드는 대용량 프레젠테이션(예: 2 GB)을 로드하는 예시를 보여줍니다:

const filePath = "LargePresentation.pptx";

let loadOptions = new aspose.slides.LoadOptions();
// KeepLocked 동작을 선택합니다—프레젠테이션 파일이 인스턴스 전체 동안 잠긴 상태로 유지됩니다
// 프레젠테이션 인스턴스이며, 메모리로 로드되거나 임시 파일에 복사될 필요가 없습니다.
loadOptions.getBlobManagementOptions().setPresentationLockingBehavior(aspose.slides.PresentationLockingBehavior.KeepLocked);
loadOptions.getBlobManagementOptions().setTemporaryFilesAllowed(true);
loadOptions.getBlobManagementOptions().setMaxBlobsBytesInMemory(10 * 1024 * 1024); // 10 MB

let presentation = new aspose.slides.Presentation(filePath, loadOptions);
try {
    // 대용량 프레젠테이션이 로드되었으며 사용할 수 있습니다. 메모리 사용량은 낮게 유지됩니다.
    
    // 프레젠테이션을 수정합니다.
    presentation.getSlides().get_Item(0).setName("Large presentation");

    // 프레젠테이션을 다른 파일에 저장합니다. 이 작업 중에도 메모리 사용량은 낮게 유지됩니다.
    presentation.save("LargePresentation-copy.pptx", aspose.slides.SaveFormat.Pptx);

    // 이렇게 하지 마세요! 프레젠테이션 객체가 해제될 때까지 파일이 잠겨 있어 I/O 예외가 발생합니다.
    //fs.unlinkSync(filePath);
} finally {
    presentation.dispose();
}

// 여기서 수행해도 됩니다. 소스 파일이 이제 프레젠테이션 객체에 의해 잠겨 있지 않습니다.
fs.unlinkSync(filePath);

외부 리소스 제어

Aspose.Slides는 외부 리소스를 관리할 수 있게 해주는 IResourceLoadingCallback 인터페이스를 제공합니다. 다음 JavaScript 코드는 IResourceLoadingCallback 인터페이스를 사용하는 방법을 보여줍니다:

const ImageLoadingHandler = java.newProxy("com.aspose.slides.IResourceLoadingCallback", {
  resourceLoading: function(args) {
        if (args.getOriginalUri().endsWith(".jpg")) {
            try {
                // 교체 이미지를 로드합니다.
                const imageData = fs.readFileSync("aspose-logo.jpg");
                args.setData(imageData);
                return aspose.slides.ResourceLoadingAction.UserProvided;
            } catch {
                return aspose.slides.ResourceLoadingAction.Skip;
            }
        } else if (args.getOriginalUri().endsWith(".png")) {
            // 교체 URL을 설정합니다.
            args.setUri("http://www.google.com/images/logos/ps_logo2.png");
            return aspose.slides.ResourceLoadingAction.Default;
        }
        // 다른 모든 이미지를 건너뜁니다.
        return aspose.slides.ResourceLoadingAction.Skip;
      }
});
let loadOptions = new aspose.slides.LoadOptions();
loadOptions.setResourceLoadingCallback(ImageLoadingHandler);

let presentation = new aspose.slides.Presentation("Sample.pptx", loadOptions);

임베드된 바이너리 객체 없이 프레젠테이션 로드

PowerPoint 프레젠테이션에는 다음과 같은 유형의 임베드된 바이너리 객체가 포함될 수 있습니다:

LoadOptions.setDeleteEmbeddedBinaryObjects 메서드를 사용하면 임베드된 바이너리 객체가 전혀 없는 상태로 프레젠테이션을 로드할 수 있습니다.

이 메서드는 잠재적으로 악성인 바이너리 콘텐츠를 제거하는 데 유용합니다. 다음 JavaScript 코드는 임베드된 바이너리 콘텐츠 없이 프레젠테이션을 로드하는 방법을 보여줍니다:

let loadOptions = new aspose.slides.LoadOptions();
loadOptions.setDeleteEmbeddedBinaryObjects(true);

let presentation = new aspose.slides.Presentation("malware.ppt", loadOptions);
try {
    // 프레젠테이션에 대한 작업을 수행합니다.
} finally {
    presentation.dispose();
}

FAQ

파일이 손상되어 열 수 없다는 것을 어떻게 알 수 있나요?

로드 중에 구문 분석/형식 검증 예외가 발생합니다. 이러한 오류는 종종 잘못된 ZIP 구조 또는 손상된 PowerPoint 레코드를 언급합니다.

열 때 필요한 글꼴이 누락되면 어떻게 되나요?

파일은 열리지만, 이후 렌더링/내보내기 단계에서 글꼴이 대체될 수 있습니다. 런타임 환경에 글꼴 대체 구성 또는 필요한 글꼴 추가를 수행하십시오.

열 때 임베드된 미디어(비디오/오디오)는 어떻게 되나요?

이들은 프레젠테이션 리소스로 사용 가능합니다. 미디어가 외부 경로로 참조되는 경우 해당 경로가 환경에서 접근 가능하도록 하세요; 그렇지 않으면 렌더링/내보내기 단계에서 미디어가 누락될 수 있습니다.