DOCリーダーの使用
DOC リーダーの操作
Aspose.Words FOSS for Python には、レガシーな Word 97-2003 .doc ファイル用の専用リーダーが含まれています。DocFileReader クラスは OLE2 バイナリ形式を解析し、操作や他フォーマットへの変換が可能な Light Document Model (LDM) を生成します。
DOC ファイルの読み込み
ディスク上の .doc ファイルを開き、Document に変換するには DocFileReader を使用します:
import aspose.words_foss as aw
doc = aw.Document("report.doc")
print(f"Paragraphs: {len(doc.all_paragraphs)}")Document コンストラクタは create_reader() に委譲し、.doc 拡張子に基づいて DocFileReader を自動的に選択します。
DocFileReaderCore を直接使用する
より低レベルの制御が必要な場合は、DocFileReaderCore をインスタンス化し、その load メソッドを呼び出します:
from aspose.words_foss.doc_reader.doc_file_reader_core import DocFileReaderCore
reader = DocFileReaderCore()
reader.load_file("legacy.doc")DocFileReaderCore は 3 つの入力方法を提供します:
| メソッド | 入力タイプ | ユースケース |
|---|---|---|
load_file(filepath) | ファイルパス文字列 | ディスクから読み取る |
load_stream(stream) | ファイルライクオブジェクト | アップロードまたはネットワークストリームから読み取る |
load_bytes(data) | bytes | メモリ内バッファから読み取る |
Light Document Model の構築
ロード後、DocFileReader に対して to_light_document() を呼び出し、LDM Document を生成します:
from aspose.words_foss.doc_reader.doc_file_reader import DocFileReader
reader = DocFileReader()
reader.load_file("input.doc")
ldm_doc = reader.to_light_document()LDM はすべてのリーダー (DocFileReader、DocumentReader、TextFileReader) で共有される内部表現です。LDM ドキュメントを取得したら、サポートされている任意の出力フォーマットに保存できます。
The DocumentFormatReader プロトコル
すべてのリーダーは DocumentFormatReader プロトコルを実装し、共通インターフェース (load_file()、load_stream()、load_bytes()) を定義します。create_reader() ファクトリー関数は、ファイル拡張子に基づいて適切なリーダーを返します:
from aspose.words_foss.reader_factory import create_reader
reader = create_reader("data.doc") # returns DocFileReader
reader.load_file("data.doc")ヒントとベストプラクティス
- ほとんどのワークフローでは、高レベルの
Document("file.doc")コンストラクタを使用してください — 読み取り選択を自動的に処理します。 - バイナリ解析層への直接アクセスが必要な場合にのみ、
DocFileReaderCoreを使用してください。 bytesとして受け取ったファイル(例: HTTPのアップロードから)は、一時ファイルの書き込みを避けるために、load_bytes()を使用することを推奨します。- DOCリーダーは、テキスト、段落、基本的な書式設定において、DOCXリーダーと同等のラウンドトリップ忠実度をサポートします。
一般的な問題
| 問題 | 原因 | 修正 |
|---|---|---|
load_file() raises FileNotFoundError | 不正なファイルパス | 呼び出す前にパスが存在することを確認してください |
| ロード後に文字化けしています | ファイルは有効な OLE2 バイナリではありません | ファイルが実際に .doc フォーマットであり、リネームされた .docx ではないことを確認してください |
| 出力に書式が欠落しています | 一部の高度な DOC 機能はまだサポートされていません | 未対応の機能については limitations.md を確認してください |
FAQ
DocFileReader と DocFileReaderCore の違いは何ですか?
DocFileReaderCoreはOLE2フォーマットの低レベルバイナリ解析を処理します。DocFileReaderは、変換に適した完全なLDM Documentを生成するto_light_document()メソッドを追加することで機能を拡張します。
ストリームからDOCファイルを読み込むことはできますか?
はい。DocFileReaderCore.load_stream(stream) を使用するか、ファイルライクオブジェクトを渡してください。これは、ファイルがストリームとしてアップロードされるウェブアプリケーションで便利です。
DOCリーダーはパスワード保護されたファイルに対応していますか?
パスワード保護された.docファイルは現在サポートされていません。ファイルが暗号化されている場合、リーダーは例外をスローします。
API Reference 概要
| クラス / メソッド | 説明 |
|---|---|
DocFileReader | LDM構築機能を備えたフルDOCリーダー |
DocFileReader.to_light_document() | 解析されたDOCデータをLDMドキュメントに変換します |
DocFileReaderCore | Word 97-2003(.doc)バイナリファイル用のコアリーダー |
DocFileReaderCore.load_file(filepath) | パスからDOCファイルをロードする |
DocFileReaderCore.load_stream(stream) | ストリームから DOC ファイルをロードする |
DocFileReaderCore.load_bytes(data) | バイトバッファから DOC ファイルをロードする |
DocumentFormatReader | すべてのドキュメントリーダーのプロトコルインターフェース |
create_reader(path) | ファイル拡張子に応じた適切なリーダーを返すファクトリ |