Word 문서를 .NET에서 로드하는 방법
.NET에서 Word 문서를 로드하는 방법
Aspose.Words FOSS for .NET은(는) 문서를 메모리로 읽어 들이며 객체를 생성하는 즉시 Document object — 라이브러리의 모든 로드 경로는 여기로 흐릅니다 Document’s 생성자 오버로드와 LoadOptions class. 이 가이드는 파일이나 스트림에서 문서를 로드하고, 비밀번호 또는 형식별 설정을 제공하며, 로드 중 외부 리소스나 손상될 수 있는 문서를 만나게 될 때 발생하는 상황을 제어하는 방법을 보여줍니다. Aspose.Words FOSS for .NET은(는) 소스에서 빌드되어 패키지 피드에서 설치하는 대신 프로젝트에 직접 참조됩니다 — 자세한 내용은 설치 가이드 아래 작업을 진행하기 전에 빌드 단계에 대한 내용은.
단계별 가이드
1단계: 파일 또는 스트림에서 문서 로드
Document에는 다섯 개의 생성자가 있습니다. Document()은(는) 문서를 로드하지 않고 새 빈 문서를 생성합니다. Document(fileName)는 디스크상의 경로에서 직접 로드하고, Document(stream)는 읽을 수 있는 Stream에서 로드합니다 — 소스가 파일이 아닌 경우, 예를 들어 메모리에 이미 존재하는 콘텐츠나 네트워크 연결을 통해 받은 경우에 유용합니다. 두 생성자 모두 두 번째 인수인 Document(fileName, loadOptions)와 Document(stream, loadOptions)를 받는 보조 오버로드를 가지고 있으며, 이는 이 가이드의 모든 다른 작업에 대한 진입점입니다.
2단계: 비밀번호로 보호된 문서 로드
LoadOptions 를 비밀번호와 함께 생성한 뒤 Document(fileName, loadOptions) (또는 스트림 오버로드)를 호출하십시오. new LoadOptions(password) 는 LoadOptions.Password 를 직접 설정합니다; 또는 파라미터가 없는 LoadOptions() 인스턴스에 Password 를 설정한 후 전달하십시오. 비밀번호를 먼저 제공하고 나중에 로드 후 실패에 대응하는 대신 — Aspose.Words FOSS for .NET 은 보호된 파일을 파싱하려면 비밀번호가 필요하므로, 복구할 부분적으로 로드된 상태가 없습니다.
Step 3: 텍스트 및 Markdown 소스에 대한 형식별 옵션 적용
Plain-text와 Markdown 소스는 기본 LoadOptions이 노출하지 않는 설정을 허용합니다. TxtLoadOptions 은 일반 텍스트에서 번호 매기기 목록을 인식하기 위한 AutoNumberingDetection와 DetectNumberingWithWhitespaces을 추가하고, DetectHyperlinks는 순수 URL을 하이퍼링크로 변환하며, DocumentDirection (LeftToRight, RightToLeft, 또는 Auto)는 텍스트 흐름 방향을 지정하고, 각 행의 시작과 끝에서 공백을 처리하기 위한 별도 LeadingSpacesOptions/TrailingSpacesOptions (형식은 TxtLeadingSpacesOptions/TxtTrailingSpacesOptions)을 제공합니다. MarkdownLoadOptions 은 Markdown의 줄바꿈 규칙이 단락 및 연속 구간에 매핑되는 방식을 제어하기 위해 PreserveEmptyLines, ImportUnderlineFormatting, SoftLineBreakCharacter을 추가합니다. 두 서브클래스는 LoadOptions을 상속하므로, 둘 중 하나에 설정된 비밀번호 또는 리소스 로딩 콜백은 기본 클래스와 동일하게 동작합니다 — Document(fileName, loadOptions)에 형식별 인스턴스를 평범한 LoadOptions와 같이 전달하십시오.
Step 4: 로딩 중 외부 리소스를 리다이렉트하거나 가로채기
LoadOptions.ResourceLoadingCallback을 IResourceLoadingCallback 구현체로 설정하면 로딩 중 문서가 참조하는 외부 리소스가 어떻게 해결되는지 제어할 수 있습니다. 해당 구현체의 ResourceLoading(args) 메서드는 리소스의 ResourceType (Image, Font, CssStyleSheet, 또는 Document)를 설명하는 ResourceLoadingArgs와 Uri, OriginalUri을 받아들여, ResourceLoadingAction을 반환합니다 — Default은 리소스를 정상적으로 로드하고, Skip은 이를 생략하며, UserProvided는 ResourceLoadingArgs.SetData(data)를 통해 제공된 데이터를 대체합니다.
Step 5: 언어 기본값 및 복구 동작 설정
문서의 언어 메타데이터가 없거나 신뢰할 수 없을 경우, 로드하기 전에 LoadOptions.LanguagePreferences.DefaultEditingLanguage을 EditingLanguage 값으로 설정하고, LanguagePreferences에 AddEditingLanguage(language) 또는 AddEditingLanguages(languages)을 사용하여 문서에 포함될 수 있는 추가 언어를 등록하십시오. 형식이 잘못될 수 있는 소스의 경우, LoadOptions.RecoveryMode를 DocumentRecoveryMode 값으로 설정합니다 — None은 복구 시도 없이 로드하고, TryRecover은 로더가 일부 구조적 문제를 우회하도록 하여 로드 실패를 방지합니다.
일반적인 문제 및 해결 방법
비밀번호가 보호된 문서를 로드할 때 비밀번호를 제공한 후에도 여전히 예외가 발생합니다. 비밀번호가 정확히 설정되었는지 확인합니다. LoadOptions 전달된 인스턴스 Document(fileName, loadOptions) (또는 스트림 오버로드) — via new LoadOptions(password) 또는 설정하여 Password 그 후 — 그리고 이것이 생성자에 실제로 전달되는 객체임을 확인하십시오. A LoadOptions 생성되었지만 절대로 전달되지 않은 Document 로드에 영향을 주지 않습니다.
Text 또는 Markdown 전용 설정이 적용되지 않는 것 같습니다. a가 있는지 확인하십시오. TxtLoadOptions or MarkdownLoadOptions 인스턴스 — 기본이 아님 LoadOptions — 가 전달되었습니다 Document 생성자. 서브클래스만이 포맷별 속성을 노출합니다; 기본 클래스를 전달하면 컴파일은 되지만 해당 속성이 조용히 사라집니다.
외부 리소스가 가로채지지 않거나 리디렉션되지 않고 있습니다. ResourceLoadingCallback 동일한 LoadOptions 에 전달된 객체 Document 생성자이며, 로드 호출 전에 할당되어야 합니다. 로드가 이미 완료된 후에 할당하면 효과가 없습니다.
잘못된 문서는 설정 후에도 여전히 로드에 실패합니다. RecoveryMode. DocumentRecoveryMode.TryRecover 로더가 문서의 일부 구조적 문제를 우회하도록 허용하지만, 더 심각한 손상은 여전히 문서가 성공적으로 로드되는 것을 방해할 수 있습니다.
문서는 ~에서 로드됩니다. Stream 경로를 통해 로드된 동일한 파일과는 다르게 동작합니다. 스트림을 전달하기 전에 스트림 위치가 시작점에 있는지 확인하십시오. Document(stream) or Document(stream, loadOptions) — 내용 중간에서 중단된 스트림은 남은 바이트만 로드합니다.
자주 묻는 질문
특별한 옵션 없이 문서를 로드하려면 어떻게 해야 하나요?
파일 경로나 Stream를 직접 Document(fileName) 또는 Document(stream)에 전달하십시오 — LoadOptions은 비밀번호, 형식별 설정, 또는 콜백이 필요할 때만 요구됩니다.
LoadOptions, TxtLoadOptions, 그리고 MarkdownLoadOptions의 차이점은 무엇인가요?
TxtLoadOptions와 MarkdownLoadOptions은 모두 LoadOptions에서 파생되며 각각 일반 텍스트와 Markdown 소스에 특화된 설정을 추가합니다. 모든 일반 LoadOptions 속성 — 비밀번호, 인코딩, 콜백 — 은 두 서브클래스 모두에서 사용할 수 있습니다.
바이트 배열에서 직접 문서를 로드할 수 있나요?
바이트를 MemoryStream에 감싸고 해당 스트림을 Document(stream) 또는 Document(stream, loadOptions)에 전달하십시오 — 바이트 배열을 직접 받아들이는 생성자는 없습니다.
로더가 외부 리소스를 해결하지 못했을 때 발생하는 동작을 어떻게 제어할 수 있나요?
IResourceLoadingCallback를 구현하고 이를 LoadOptions.ResourceLoadingCallback에 할당하십시오. 로드가 실패하도록 두는 대신 리소스를 생략하려면 ResourceLoading(args)에서 ResourceLoadingAction.Skip를 반환하십시오.
RecoveryMode를 설정하면 올바르게 형성된 문서가 로드되는 방식이 변합니까?
아니요. DocumentRecoveryMode는 로더가 실제로 구조적 문제를 만나면 동작을 변경합니다 — 문서가 잘 형성되어 있으면 설정과 관계없이 동일하게 로드됩니다.