.NET에서 프레젠테이션 열기
소개
Aspose.Slides for .NET는 파일 및 스트림에서 PowerPoint 및 OpenDocument 프레젠테이션을 로드할 수 있습니다. 프레젠테이션을 로드한 후에는 구조를 검사하고, 슬라이드를 편집하며, 리소스를 관리하고, 원본 형식이나 다른 지원 형식으로 저장할 수 있습니다.
로드 동작은 LoadOptions 클래스를 통해 맞춤화할 수 있습니다. 예를 들어, 개방 암호를 제공하거나, 대용량 바이너리 객체를 관리 메모리 외부에 보관하거나, 외부 리소스를 제어하거나, 임베드된 바이너리 데이터를 생략할 수 있습니다.
프레젠테이션 열기
파일이나 스트림을 로드한 후, 원본 프레젠테이션 형식을 확인하여 애플리케이션이 어떻게 처리할지 선택할 수 있습니다.
기존 프레젠테이션을 열려면 파일 경로를 Presentation 생성자에 전달합니다. 사용 후에는 프레젠테이션을 Dispose하여 파일 핸들, 임시 데이터 및 기타 리소스가 즉시 해제되도록 합니다.
다음 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# 코드는 대용량 프레젠테이션(예: 2GB)을 로드하는 방법을 보여줍니다:
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);
Note
PresentationLockingBehavior.KeepLocked을 사용하면, Presentation 객체가 Dispose될 때까지 소스 파일이 잠긴 상태로 유지됩니다. 해당 객체가 살아 있는 동안 소스 파일을 이동, 덮어쓰기 또는 삭제하지 마세요.
Aspose.Slides는 로드하는 동안 입력 스트림의 내용을 복사할 수 있습니다. 대용량 프레젠테이션의 경우 파일 경로가 일반적으로 스트림보다 더 효율적입니다. 추가 저장 및 메모리 관리 옵션은 Manage BLOBs를 참조하십시오.
외부 리소스 제어
LoadOptions.ResourceLoadingCallback은 IResourceLoadingCallback 구현을 받아들입니다. 콜백은 대체 데이터를 제공하거나, 리소스를 재지정하거나, 기본 로더를 사용하거나, 리소스를 건너뛸 수 있습니다. 이는 프레젠테이션에 외부 이미지가 포함되어 있고, 애플리케이션별 보안 또는 저장 규칙에 따라 해결해야 할 때 유용합니다.
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;
}
}
}
임베드된 바이너리 객체 없이 프레젠테이션 로드
프레젠테이션에는 애플리케이션이 필요 없거나 유지하고 싶지 않은 임베드된 바이너리 데이터가 포함될 수 있습니다. 예시:
- VBA 프로젝트, IPresentation.VbaProject를 통해 이용 가능;
- 임베드된 OLE 데이터, IOleEmbeddedDataInfo.EmbeddedFileData를 통해 이용 가능;
- ActiveX 컨트롤 데이터, IControl.ActiveXControlBinary를 통해 이용 가능.
LoadOptions.DeleteEmbeddedBinaryObjects를 true로 설정하면 로드 중에 해당 바이너리 데이터를 제거합니다. 정제된 결과를 유지하려면 로드된 프레젠테이션을 저장하세요.
이 옵션은 원치 않는 임베드된 페이로드에 대한 노출을 줄여 주지만, 완전한 악성코드 탐지 또는 콘텐츠 정제 시스템은 아닙니다.
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는 로드 중에 파싱 또는 형식 예외를 발생시킵니다. 잘못된 암호 오류와는 별도로 해당 오류를 처리하여 애플리케이션이 원인을 정확히 보고하도록 합니다.
필요한 글꼴이 없으면 어떻게 되나요?
프레젠테이션은 여전히 로드될 수 있지만, 렌더링 및 내보내기 시 글꼴이 대체될 수 있습니다. 출력이 더 예측 가능하도록 글꼴 대체 구성 또는 맞춤 글꼴 제공을 사용할 수 있습니다.
프레젠테이션을 로드하면 임베드된 미디어도 로드됩니까?
임베드된 오디오 및 비디오는 프레젠테이션 객체 모델을 통해 사용할 수 있게 됩니다. 외부 리소스는 구성된 리소스 로딩 동작에 따라 해결되며, 해당 위치에 접근할 수 없으면 사용할 수 없을 수도 있습니다.