.NET에서 프레젠테이션 열기

소개

Aspose.Slides for .NET은 파일 및 스트림에서 PowerPoint 및 OpenDocument 프레젠테이션을 로드할 수 있습니다. 프레젠테이션을 로드한 후에는 구조를 검사하고, 슬라이드를 편집하고, 리소스를 관리하며, 원본 형식이나 다른 지원되는 형식으로 저장할 수 있습니다.

로드 동작은 LoadOptions 클래스를 통해 사용자 지정할 수 있습니다. 예를 들어, 열기 비밀번호를 제공하고, 큰 바이너리 개체를 관리 메모리 외부에 보관하며, 외부 리소스를 제어하거나 임베드된 바이너리 데이터를 생략할 수 있습니다.

프레젠테이션 열기

기존 프레젠테이션을 열려면 파일 경로를 Presentation 생성자에 전달하십시오. 사용 후에는 프레젠테이션을 해제해 파일 핸들, 임시 데이터 및 기타 리소스가 즉시 해제되도록 합니다.

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

using System;
using Aspose.Slides;

using var presentation = new Presentation("sample.pptx");

Console.WriteLine("Slide count: " + presentation.Slides.Count);

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

열기 비밀번호는 프레젠테이션 내용을 암호화합니다. 전체 프레젠테이션을 로드하려면 올바른 비밀번호를 LoadOptions.Password에 할당하고 옵션을 Presentation 생성자에 전달하십시오. 비밀번호가 없거나 틀리면 로드가 실패합니다.

using System;
using Aspose.Slides;

var loadOptions = new LoadOptions { Password = "open_password" };
using var presentation = new Presentation("encrypted-presentation.pptx", loadOptions);

Console.WriteLine("Slide count: " + presentation.Slides.Count);

비밀번호 감지, 검증 및 암호화 작업 흐름에 대해서는 Password-Protect Presentations를 참조하십시오. 암호화된 프레젠테이션이 공개 문서 속성을 포함하도록 저장된 경우, 해당 속성은 비밀번호 없이도 읽을 수 있습니다; 자세히 보려면 Manage Presentation Properties를 확인하십시오.

대용량 프레젠테이션 열기

LoadOptions.BlobManagementOptions는 Aspose.Slides가 이미지, 오디오 및 비디오와 같은 대용량 바이너리 개체를 처리하는 방식을 제어합니다. 소스 파일을 잠금 상태로 유지하거나, 임시 파일을 허용하고, 메모리에 유지되는 BLOB 데이터 양을 제한할 수 있습니다.

다음 C# 코드는 대용량 프레젠테이션(예: 2 GB)을 로드하는 방법을 보여줍니다:

using Aspose.Slides;
using Aspose.Slides.Export;

const string filePath = "large-presentation.pptx";

var loadOptions = new LoadOptions
{
    BlobManagementOptions =
    {
        PresentationLockingBehavior = PresentationLockingBehavior.KeepLocked,
        IsTemporaryFilesAllowed = true,
        MaxBlobsBytesInMemory = 10 * 1024 * 1024
    }
};

using var presentation = new Presentation(filePath, loadOptions);

presentation.Slides[0].Name = "Large presentation";
presentation.Save("large-presentation-copy.pptx", SaveFormat.Pptx);

외부 리소스 제어

LoadOptions.ResourceLoadingCallbackIResourceLoadingCallback 구현을 받아들입니다. 콜백을 통해 교체 데이터를 제공하거나, 리소스를 리다이렉트하거나, 기본 로더를 사용하거나, 리소스를 건너뛸 수 있습니다. 이는 프레젠테이션에 포함된 외부 이미지가 애플리케이션별 보안 또는 저장 규칙에 따라 해결되어야 할 때 유용합니다.

using System;
using System.IO;
using Aspose.Slides;

internal static class OpenPresentationExample
{
    private static void Main()
    {
        var loadOptions = new LoadOptions
        {
            ResourceLoadingCallback = new ImageLoadingHandler()
        };

        using var presentation = new Presentation("presentation-with-external-images.pptx", loadOptions);
        Console.WriteLine("Slide count: " + presentation.Slides.Count);
    }

    private sealed class ImageLoadingHandler : IResourceLoadingCallback
    {
        public ResourceLoadingAction ResourceLoading(IResourceLoadingArgs args)
        {
            var isJpeg = args.OriginalUri.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase);
            if (!isJpeg || !File.Exists("approved-image.jpg"))
            {
                return ResourceLoadingAction.Skip;
            }

            var imageData = File.ReadAllBytes("approved-image.jpg");
            args.SetData(imageData);
            return ResourceLoadingAction.UserProvided;
        }
    }
}

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

프레젠테이션에 포함된 바이너리 데이터 중 애플리케이션에서 필요하지 않거나 유지하고 싶지 않은 경우가 있습니다. 예시:

로드 중에 이 바이너리 데이터를 제거하려면 LoadOptions.DeleteEmbeddedBinaryObjectstrue로 설정하십시오. 로드된 프레젠테이션을 저장하면 정제된 결과가 지속됩니다.

이 옵션은 원하지 않는 임베드된 페이로드 노출을 줄여 주지만, 완전한 악성코드 탐지 또는 콘텐츠 정제 시스템은 아닙니다.

using Aspose.Slides;
using Aspose.Slides.Export;

var loadOptions = new LoadOptions
{
    DeleteEmbeddedBinaryObjects = true
};

using var presentation = new Presentation("presentation-with-embedded-data.pptx", loadOptions);

presentation.Save("presentation-without-embedded-data.pptx", SaveFormat.Pptx);

FAQ

파일이 손상되어 열 수 없음을 어떻게 판단할 수 있나요?

Aspose.Slides는 로드 중에 구문 분석 또는 형식 예외를 발생시킵니다. 비밀번호 오류와는 별도로 이 실패를 처리하여 애플리케이션이 원인을 정확히 보고하도록 하십시오.

필요한 글꼴이 없으면 어떻게 되나요?

프레젠테이션은 여전히 로드되지만, 렌더링 및 내보내기 시 글꼴이 대체될 수 있습니다. 출력이 더 예측 가능하도록 하려면 configure font substitution 또는 provide custom fonts을 사용하십시오.

프레젠테이션을 로드하면 임베드된 미디어도 로드됩니까?

임베드된 오디오와 비디오는 프레젠테이션 객체 모델을 통해 사용할 수 있게 됩니다. 외부 리소스는 구성된 리소스 로딩 동작에 따라 해결되며, 해당 위치에 접근할 수 없는 경우 사용할 수 없을 수 있습니다.