Word ドキュメントを .NET でロードする方法
.NET で Word ドキュメントをロードする方法
Aspose.Words FOSS for .NET は、オブジェクトを構築した瞬間にドキュメントをメモリに読み込みます Document object — ライブラリ内のすべてのロードパスはここを通ります Documentのコンストラクタオーバーロードと LoadOptions クラス。このガイドでは、ファイルまたはストリームからドキュメントをロードする方法、パスワードやフォーマット固有の設定を提供する方法、ロード時に外部リソースや不正な可能性のあるドキュメントに遭遇した際の挙動を制御する方法を示します。Aspose.Words FOSS for .NET はソースからビルドされ、パッケージフィードからインストールするのではなく、プロジェクト内で直接参照されます — 詳細は インストールガイド 以下のタスクに取り組む前のビルド手順については.
ステップバイステップ ガイド
ステップ 1: ファイルまたはストリームからドキュメントをロードする
Document には5つのコンストラクタがあります。Document() はドキュメントをロードせずに新しい空のドキュメントを作成します。Document(fileName) はディスク上のパスから直接ロードし、Document(stream) は任意の読み取り可能な Stream からロードします — ソースがファイルでなく、メモリ内のコンテンツやネットワーク経由で受信したものなどの場合に便利です。どちらも第2引数として Document(fileName, loadOptions) と Document(stream, loadOptions) を受け取るオーバーロードを持ち、これは本ガイドの他のすべてのタスクのエントリポイントとなります。
ステップ 2: パスワード保護されたドキュメントをロードする
呼び出し Document(fileName, loadOptions)(またはストリームオーバーロード)を行う前に、パスワード付きの LoadOptions を構築します。new LoadOptions(password) は LoadOptions.Password を直接設定します;あるいは、パラメータなしの LoadOptions() インスタンスに Password を設定してから渡します。パスワードは最初に提供し、先にロードして失敗に対応するのではなく、あらかじめ供給してください — Aspose.Words FOSS for .NET は保護されたファイルを解析するためにパスワードが必須であり、部分的にロードされた状態からの回復はありません。
ステップ 3: テキストおよび Markdown ソースに対してフォーマット固有のオプションを適用する
プレーンテキストと Markdown ソースは、基本 LoadOptions が公開していない設定を受け入れます。TxtLoadOptions はプレーンテキストで番号付きリストを認識するために AutoNumberingDetection と DetectNumberingWithWhitespaces を追加し、裸の URL をハイパーリンクに変換するために DetectHyperlinks を、テキストの流れ方向を指定するために DocumentDirection(LeftToRight、RightToLeft、または Auto)を、各行の先頭と末尾の空白処理のために別々の LeadingSpacesOptions/TrailingSpacesOptions(型は TxtLeadingSpacesOptions/TxtTrailingSpacesOptions)を提供します。MarkdownLoadOptions は、Markdown の改行規則が段落やランにどのようにマッピングされるかを制御するために PreserveEmptyLines、ImportUnderlineFormatting、SoftLineBreakCharacter を追加します。両サブクラスは LoadOptions から派生しているため、どちらかに設定したパスワードやリソースロードコールバックは基底クラスと同様に動作します — フォーマット固有のインスタンスを Document(fileName, loadOptions) に渡す際は、プレーンな LoadOptions を渡すのと同じ方法で行ってください。
ステップ 4: ロード中に外部リソースをリダイレクトまたはインターセプトする
LoadOptions.ResourceLoadingCallback を IResourceLoadingCallback の実装に設定すると、ロード中にドキュメントが参照する外部リソースの解決方法を制御できます。その ResourceLoading(args) メソッドは、リソースの ResourceType(Image、Font、CssStyleSheet、または Document)を記述した ResourceLoadingArgs と、Uri と OriginalUri を受け取り、ResourceLoadingAction を返します — 通常通りリソースをロードするには Default、省略するには Skip、ResourceLoadingArgs.SetData(data) を介して提供されたデータに置き換えるには UserProvided を使用します。
ステップ 5: 言語のデフォルトとリカバリ動作を設定する
ドキュメントの言語メタデータが欠落している、または信頼できない場合、ロード前に LoadOptions.LanguagePreferences.DefaultEditingLanguage を EditingLanguage 値に設定し、LanguagePreferences 上で AddEditingLanguage(language) または AddEditingLanguages(languages) を使用してドキュメントが含む可能性のある追加言語を登録します。形式が不正な可能性のあるソースについては、LoadOptions.RecoveryMode を DocumentRecoveryMode 値に設定します — リカバリを試みずにロードするには None、ロード失敗を回避し構造的問題のいくつかを回避させるには TryRecover を使用します。
一般的な問題と対策
パスワードで保護されたドキュメントをロードすると、パスワードを提供した後でも例外がスローされます。 パスワードが正確に設定されたことを確認してください LoadOptions 渡されたインスタンス Document(fileName, loadOptions) (またはストリームのオーバーロード) — 経由で new LoadOptions(password) または設定することで Password その後 — そしてこれがコンストラクタに実際に渡されるオブジェクトであること。A LoadOptions 作成されたが決して渡されなかった Document ロードに影響しません。
テキストまたは 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 を設定すると、正しく構成されたドキュメントのロード方法が変わりますか?
No. DocumentRecoveryMode は、ローダーが実際に構造的な問題に直面したときにのみ挙動を変えます — 整形式のドキュメントは設定に関係なく同じようにロードされます。