Praca z DOC Reader
Praca z DOC Reader
Aspose.Words FOSS dla Python zawiera dedykowany czytnik dla starszych plików Word 97-2003 .doc. Klasa DocFileReader parsuje binarny format OLE2 i tworzy Light Document Model (LDM), który można manipulować lub konwertować na inne formaty.
Ładowanie pliku DOC
Użyj DocFileReader, aby otworzyć plik .doc z dysku i przekonwertować go na Document:
import aspose.words_foss as aw
doc = aw.Document("report.doc")
print(f"Paragraphs: {len(doc.all_paragraphs)}")Konstruktor Document deleguje do create_reader(), który automatycznie wybiera DocFileReader w oparciu o rozszerzenie .doc.
Używanie DocFileReaderCore bezpośrednio
Aby uzyskać kontrolę na niższym poziomie, zainstancjuj DocFileReaderCore i wywołaj jego metody ładowania:
from aspose.words_foss.doc_reader.doc_file_reader_core import DocFileReaderCore
reader = DocFileReaderCore()
reader.load_file("legacy.doc")DocFileReaderCore zapewnia trzy metody wprowadzania:
| Metoda | Typ wejścia | Przypadek użycia |
|---|---|---|
load_file(filepath) | Ciąg ścieżki pliku | Odczyt z dysku |
load_stream(stream) | Obiekt podobny do pliku | Odczyt z przesyłania lub strumienia sieciowego |
load_bytes(data) | bytes | Odczytaj z bufora w pamięci |
Budowanie modelu Light Document
Po załadowaniu wywołaj to_light_document() na DocFileReader, aby wygenerować 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 jest wewnętrzną reprezentacją współdzieloną przez wszystkich czytników (DocFileReader, DocumentReader, TextFileReader). Gdy masz już dokument LDM, możesz zapisać go w dowolnym obsługiwanym formacie wyjściowym.
Protokół DocumentFormatReader
Wszyscy czytnicy implementują protokół DocumentFormatReader, który definiuje wspólny interfejs: load_file(), load_stream() i load_bytes(). Funkcja fabryczna create_reader() zwraca odpowiedniego czytnika w zależności od rozszerzenia pliku:
from aspose.words_foss.reader_factory import create_reader
reader = create_reader("data.doc") # returns DocFileReader
reader.load_file("data.doc")Wskazówki i najlepsze praktyki
- Użyj wysokopoziomowego konstruktora
Document("file.doc")w większości przepływów pracy — automatycznie obsługuje wybór czytnika. - Używaj
DocFileReaderCoretylko wtedy, gdy potrzebujesz bezpośredniego dostępu do warstwy parsowania binarnego. - Dla plików otrzymywanych jako
bytes(np. z przesyłek HTTP), preferujload_bytes(), aby uniknąć zapisywania plików tymczasowych. - Czytnik DOC obsługuje taką samą wierność round-trip jak czytnik DOCX dla tekstu, akapitów i podstawowego formatowania.
Typowe problemy
| Problem | Przyczyna | Poprawka |
|---|---|---|
load_file() generuje FileNotFoundError | Nieprawidłowa ścieżka pliku | Sprawdź, czy ścieżka istnieje przed wywołaniem |
| Zniekształcony tekst po wczytaniu | Plik nie jest prawidłowym binarnym OLE2 | Potwierdź, że plik jest rzeczywiście w formacie .doc, a nie przemianowanym .docx |
| Brak formatowania w wyjściu | Niektóre zaawansowane funkcje DOC nie są jeszcze obsługiwane | Sprawdź limitations.md pod kątem nieobsługiwanych funkcji |
FAQ
Jaka jest różnica między DocFileReader a DocFileReaderCore?
DocFileReaderCore obsługuje niskopoziomowe parsowanie binarne formatu OLE2. DocFileReader rozszerza go, dodając metodę to_light_document(), która generuje pełny LDM Document odpowiedni do konwersji.
Czy mogę wczytać plik DOC ze strumienia?
Tak. Użyj DocFileReaderCore.load_stream(stream) lub przekaż obiekt podobny do pliku. Jest to przydatne w aplikacjach internetowych, w których pliki są przesyłane jako strumienie.
Czy czytnik DOC obsługuje pliki zabezpieczone hasłem?
Pliki .doc zabezpieczone hasłem nie są obecnie obsługiwane. Czytnik zgłosi wyjątek, jeśli plik jest zaszyfrowany.
API Reference Podsumowanie
| Klasa / Metoda | Opis |
|---|---|
DocFileReader | Pełny czytnik DOC z możliwością budowania LDM |
DocFileReader.to_light_document() | Konwertuje przetworzone dane DOC na dokument LDM |
DocFileReaderCore | Podstawowy czytnik plików binarnych Word 97-2003 (.doc) |
DocFileReaderCore.load_file(filepath) | Wczytaj plik DOC z ścieżki |
DocFileReaderCore.load_stream(stream) | Wczytaj plik DOC ze strumienia |
DocFileReaderCore.load_bytes(data) | Wczytaj plik DOC z bufora bajtów |
DocumentFormatReader | Interfejs protokołu dla wszystkich czytników dokumentów |
create_reader(path) | Fabryka zwracająca odpowiedni czytnik dla rozszerzenia pliku |