Praca z DOCX Reader

Praca z DOCX Reader

Klasa DocumentReader odczytuje pliki Office Open XML (.docx) i tworzy uogólnioną strukturę danych — Light Document Model (LDM). Obsługuje akapity, tabele, kształty, obrazy i formatowanie, udostępniając zawartość do manipulacji lub konwersji.


Czytanie pliku DOCX

Najprostsze podejście polega na użyciu konstruktora Document, który automatycznie wybiera DocumentReader dla plików .docx:

import aspose.words_foss as aw

doc = aw.Document("input.docx")
print(f"Sections: {len(doc.sections)}")
for para in doc.all_paragraphs:
    print(para.text)

DocumentReader Architektura

DocumentReader używa dwóch mixinów do podziału odpowiedzialności:

ComponentRole
DocumentReaderGłówny parser DOCX — odczytuje części XML z pakietu OPC
LdmBuilderMixinTworzy Light Document Model na podstawie przetworzonych danych
ShapeParserMixinAnalizuje elementy rysunków i kształtów osadzone w dokumencie

Wszystkie trzy współpracują wewnętrznie — interakcję z wynikiem uzyskujesz poprzez Document API.


Wyodrębnianie tekstu

Użyj właściwości text w załadowanym dokumencie, aby wyodrębnić zwykły tekst bez zapisywania do pliku:

import aspose.words_foss as aw

doc = aw.Document("contract.docx")
text = doc.text
print(text[:500])

Praca z akapitami i formatowaniem

Uzyskaj dostęp do właściwości na poziomie akapitu poprzez LDM:

import aspose.words_foss as aw

doc = aw.Document("styled.docx")
for para in doc.all_paragraphs:
    for run in para.runs:
        if run.font.bold:
            print(f"Bold: {run.text}")

Każdy Run zawiera właściwości czcionki (pogrubienie, kursywa, rozmiar, kolor), które zostały sparsowane z dokumentu DOCX XML.


Obsługa kształtów i obrazów

ShapeParserMixin wyodrębnia elementy rysunkowe podczas parsowania. Kształty pojawiają się w LDM jako obiekty ShapeNode w treści akapitu:

import aspose.words_foss as aw

doc = aw.Document("with-images.docx")
for para in doc.all_paragraphs:
    for node in para.content_sequence:
        if hasattr(node, 'shape_type'):
            print(f"Shape: {node.shape_type}")

Wskazówki i najlepsze praktyki

  • Użyj Document("file.docx") w standardowych przepływach pracy — obsługuje on wybór czytnika, walidację pakietu i automatyczne konstruowanie LDM.
  • W przypadku wejścia opartego na strumieniu (przesyłanie przez internet), przekaż obiekt podobny do pliku do konstruktora Document.
  • Dla plików zawierających tabele, uzyskaj do nich dostęp za pomocą doc.tables lub doc.all_tables.
  • W przetwarzaniu wsadowym, ponownie użyj tego samego procesu Python, aby uniknąć wielokrotnego narzutu związanego z importem.

Typowe problemy

ProblemPrzyczynaNapraw
Plik nie ładuje się (wyjątek)Uszkodzony lub niekompletny ZIP archiwumSprawdź, czy plik jest prawidłowym .docx (pakiet OPC oparty na ZIP)
Brakujące obrazy w wyjściuCzęści obrazu nie są osadzone w pakiecieSprawdź, czy DOCX zawiera osadzone (nie powiązane) obrazy
Brakująca treść w wyjściuWymagane części XML nieobecne w pakieciePlik może być obcięty; wyeksportuj ponownie z aplikacji źródłowej

FAQ

Czym jest Light Document Model (LDM)?

LDM jest wewnętrzną reprezentacją współdzieloną przez wszystkie czytniki. Abstrahuje szczegóły specyficzne dla formatu (OPC XML, binarny OLE2) do wspólnej struktury sekcji, akapitów, fragmentów, tabel i kształtów.

Czy DocumentReader może obsługiwać pliki DOCM (z makrami)?

Pliki .docm z makrami używają tej samej struktury OPC. Czytnik może analizować zawartość dokumentu, ale makra nie są zachowywane ani wykonywane.

Jak czytnik radzi sobie z dużymi dokumentami?

Czytnik przetwarza części XML kolejno. Zużycie pamięci rośnie wraz z rozmiarem dokumentu. W przypadku bardzo dużych dokumentów warto przetwarzać sekcje indywidualnie.


API Reference Podsumowanie

Klasa / MetodaOpis
DocumentReaderOdczytuje dokumenty DOCX i tworzy uogólnione struktury danych
LdmBuilderMixinMixin zapewniający metody konstrukcji Light Document Model
ShapeParserMixinMixin zapewniający metody parsowania rysunków/kształtów
DocumentReprezentuje dokument Word (główny element LDM)
create_reader(path)Fabryka zwracająca odpowiedni czytnik dla rozszerzenia pliku

Zobacz także

 Polski