Работа с DOC Reader
Работа с DOC Reader
Aspose.Words FOSS за Python включва специален читател за наследени файлове Word 97-2003 .doc . Класата ̋DocFileReader∂ анализира двоичния формат на OLE2 и произвежда Лайт Документ Модел (LDM), който може да бъде манипулиран или конвертиран в други формати.
Зареждане на файл DOC
Използвайте DocFileReader за отваряне на файл ̋.doc∂ от диска и преобразуването му в ̆Dokument:
import aspose.words_foss as aw
doc = aw.Document("report.doc")
print(f"Paragraphs: {len(doc.all_paragraphs)}")Конструкторът Document делегира на ̋create_reader (() ̆, който избира автоматично ∂DOCFILEReader゚ въз основа на разширението ⌒.doc` .
Използване на DocFileReaderCore директно
За управление на по-ниско ниво инстанцирайте DocFileReaderCore и извикайте методите за зареждане:
from aspose.words_foss.doc_reader.doc_file_reader_core import DocFileReaderCore
reader = DocFileReaderCore()
reader.load_file("legacy.doc")DocFileReaderCore предоставя три въвеждащи метода:
| Method | Input type | Use case |
|---|---|---|
load_file(filepath) | File path string | Read from disk |
load_stream(stream) | File-like object | Read from upload or network stream |
load_bytes(data) | bytes | Read from in-memory buffer |
Изграждане на модел за леки документи
След зареждане, се обажда `to_light_document (() ̋ на ̆DocFileReader∂ за създаване на LDM∂Dokument∂:
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, Документ Редер , ゚TextFireReeder`).След като имате документ на LMD можете да го запазите във всеки поддържан формат за изход.
Протоколът за 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само когато имате нужда от пряк достъп до двоичния слой за анализиране. - За файлове, получени като `байти (например от HTTP качвания), предпочитайте ̋load_bytes (() ∂ да избегнете писането на временни файлове.
- Читателят на DOC поддържа същата верност за пътуване и връщане като читателя на Docx за текст, параграфи и основно форматиране.
Общи проблеми
| Issue | Cause | Fix |
|---|---|---|
load_file() raises FileNotFoundError | Incorrect file path | Verify the path exists before calling |
| Garbled text after load | File is not a valid OLE2 binary | Confirm the file is genuinely .doc format, not a renamed .docx |
| Missing formatting in output | Some advanced DOC features not yet supported | Check limitations.md for unsupported features |
Часто задавани въпроси
Каква е разликата между DocFileReader и DocFiLeaderCore?
DocFileReaderCore обработва двоичното анализиране на ниско ниво на формата OLE2. ̋DucFireReater∂ го разширява чрез добавяне на метода ゚to_light_document (() ̅, който произвежда пълен LDM ⌒Dokument∂ подходящ за конверсия.
Мога ли да залагам DOC файл от поток?
Да. Използвайте DocFileReaderCore.load_stream(stream) или прехвърлете файлов обект. Това е полезно за уеб приложения, където файловете се качват като потоци.
Дали изчислителът на DOC обработва защитени с парола файлове?
Паролово защитени файлове .doc не се поддържат в момента. Четещият ще повдигне изключение, ако файлът е криптиран.
Снимка на API референтна информация
| Class / Method | Description |
|---|---|
DocFileReader | Full DOC reader with LDM building capability |
DocFileReader.to_light_document() | Converts parsed DOC data to an LDM Document |
DocFileReaderCore | Core reader for Word 97-2003 (.doc) binary files |
DocFileReaderCore.load_file(filepath) | Load a DOC file from a path |
DocFileReaderCore.load_stream(stream) | Load a DOC file from a stream |
DocFileReaderCore.load_bytes(data) | Load a DOC file from a bytes buffer |
DocumentFormatReader | Protocol interface for all document readers |
create_reader(path) | Factory that returns the correct reader for a file extension |