Werken met DOCX Reader
Werken met DOCX Reader
De DocumentReader klasse leest Office Open XML (.docx) bestanden en produceert een abstracte datastructuur — het Light Document Model (LDM). Het verwerkt alinea’s, tabellen, vormen, afbeeldingen en opmaak, waardoor de inhoud beschikbaar is voor manipulatie of conversie.
Een DOCX-bestand lezen
De eenvoudigste aanpak is het gebruik van de Document constructor, die automatisch DocumentReader selecteert voor .docx bestanden:
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 Architectuur
DocumentReader gebruikt twee mixins om verantwoordelijkheden te splitsen:
| Component | Role |
|---|---|
DocumentReader | Hoofd DOCX-parser — leest XML onderdelen uit het OPC-pakket |
LdmBuilderMixin | Construeert het Light Document Model vanuit geparseerde gegevens |
ShapeParserMixin | Parseert teken- en vormelementen die in het document zijn ingebed |
Alle drie werken intern samen — je werkt met het resultaat via de Document API.
Tekst extraheren
Gebruik de text eigenschap op een geladen document om platte tekst te extraheren zonder naar een bestand op te slaan:
import aspose.words_foss as aw
doc = aw.Document("contract.docx")
text = doc.text
print(text[:500])Werken met alinea’s en opmaak
Toegang tot alinea-niveau eigenschappen via de 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}")Elke Run bevat lettertype-eigenschappen (vet, cursief, grootte, kleur) die zijn geparseerd uit de DOCX XML.
Behandelen van vormen en afbeeldingen
De ShapeParserMixin extraheert tekenelementen tijdens het parseren. Vormen verschijnen in de LDM als ShapeNode objecten binnen de alinea-inhoud:
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}")Tips en best practices
- Gebruik
Document("file.docx")voor standaardworkflows — het handelt de selectie van lezers, pakketvalidatie en LDM-constructie automatisch af. - Voor streamgebaseerde invoer (webuploads) geef je een bestand-achtig object door aan de
Document-constructor. - Voor bestanden met tabellen kun je ze benaderen via
doc.tablesofdoc.all_tables. - Voor batchverwerking kun je hetzelfde Python-proces hergebruiken om herhaald importoverhead te vermijden.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossen |
|---|---|---|
| Bestand wordt niet geladen (uitzondering) | Corrupt of onvolledig ZIP archief | Controleer of het bestand een geldige .docx (ZIP-gebaseerd OPC-pakket) is |
| Ontbrekende afbeeldingen in uitvoer | Afbeeldingsonderdelen niet ingebed in het pakket | Controleer of de DOCX ingebedde (niet gelinkte) afbeeldingen bevat |
| Ontbrekende inhoud in uitvoer | Vereiste XML onderdelen ontbreken in het pakket | Het bestand kan ingekort zijn; exporteer opnieuw vanuit de bronapplicatie |
FAQ
Wat is het Light Document Model (LDM)?
De LDM is de interne weergave die door alle lezers wordt gedeeld. Het abstraheert format-specifieke details (OPC XML, OLE2-binary) naar een gemeenschappelijke structuur van secties, alinea’s, runs, tabellen en vormen.
Kan DocumentReader DOCM (macro-enabled) bestanden verwerken?
Macro-enabled .docm bestanden gebruiken dezelfde OPC-structuur. De lezer kan de documentinhoud parsen, maar macro’s worden niet bewaard of uitgevoerd.
Hoe gaat de lezer om met grote documenten?
De lezer verwerkt de XML delen opeenvolgend. Het geheugenverbruik schaalt met de documentgrootte. Voor zeer grote documenten, overweeg om secties afzonderlijk te verwerken.
API Reference Samenvatting
| Klasse / Methode | Beschrijving |
|---|---|
DocumentReader | Leest DOCX-documenten en produceert geabstraheerde datastructuren |
LdmBuilderMixin | Mixin die Light Document Model-constructiemethoden biedt |
ShapeParserMixin | Mixin die methoden voor het ontleden van tekeningen/vormen biedt |
Document | Stelt een Word-document voor (de LDM-root) |
create_reader(path) | Factory die de juiste reader retourneert voor een bestandsextensie |