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:

MetodaTyp wejściaPrzypadek użycia
load_file(filepath)Ciąg ścieżki plikuOdczyt z dysku
load_stream(stream)Obiekt podobny do plikuOdczyt z przesyłania lub strumienia sieciowego
load_bytes(data)bytesOdczytaj 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 DocFileReaderCore tylko wtedy, gdy potrzebujesz bezpośredniego dostępu do warstwy parsowania binarnego.
  • Dla plików otrzymywanych jako bytes (np. z przesyłek HTTP), preferuj load_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

ProblemPrzyczynaPoprawka
load_file() generuje FileNotFoundErrorNieprawidłowa ścieżka plikuSprawdź, czy ścieżka istnieje przed wywołaniem
Zniekształcony tekst po wczytaniuPlik nie jest prawidłowym binarnym OLE2Potwierdź, że plik jest rzeczywiście w formacie .doc, a nie przemianowanym .docx
Brak formatowania w wyjściuNiektóre zaawansowane funkcje DOC nie są jeszcze obsługiwaneSprawdź 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 / MetodaOpis
DocFileReaderPełny czytnik DOC z możliwością budowania LDM
DocFileReader.to_light_document()Konwertuje przetworzone dane DOC na dokument LDM
DocFileReaderCorePodstawowy 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
DocumentFormatReaderInterfejs protokołu dla wszystkich czytników dokumentów
create_reader(path)Fabryka zwracająca odpowiedni czytnik dla rozszerzenia pliku

Zobacz także

 Polski