Werken met DOC Reader
Werken met DOC Reader
Aspose.Words FOSS voor Python bevat een speciale lezer voor legacy Word 97-2003 .doc bestanden. De DocFileReader klasse parseert het OLE2 binaire formaat en produceert een Light Document Model (LDM) dat kan worden gemanipuleerd of geconverteerd naar andere formaten.
DOC-bestand laden
Gebruik DocFileReader om een .doc bestand van schijf te openen en het te converteren naar een Document:
import aspose.words_foss as aw
doc = aw.Document("report.doc")
print(f"Paragraphs: {len(doc.all_paragraphs)}")De Document constructor delegeert naar create_reader(), die DocFileReader automatisch selecteert op basis van de .doc extensie.
Direct gebruik van DocFileReaderCore
Voor lagere-niveau controle, instantieer DocFileReaderCore en roep zijn load-methoden aan:
from aspose.words_foss.doc_reader.doc_file_reader_core import DocFileReaderCore
reader = DocFileReaderCore()
reader.load_file("legacy.doc")DocFileReaderCore biedt drie invoermethoden:
| Methode | Invoertype | Gebruikssituatie |
|---|---|---|
load_file(filepath) | Bestandspadstring | Lezen van schijf |
load_stream(stream) | Bestandsachtig object | Lezen van upload of netwerkstream |
load_bytes(data) | bytes | Lezen vanuit in-memorybuffer |
Bouwen van het Light Document Model
Na het laden, roep to_light_document() aan op DocFileReader om een LDM Document te produceren:
from aspose.words_foss.doc_reader.doc_file_reader import DocFileReader
reader = DocFileReader()
reader.load_file("input.doc")
ldm_doc = reader.to_light_document()De LDM is de interne representatie die wordt gedeeld door alle lezers (DocFileReader, DocumentReader, TextFileReader). Zodra je een LDM-document hebt, kun je het opslaan in elk ondersteund uitvoerformaat.
Het DocumentFormatReader Protocol
Alle lezers implementeren het DocumentFormatReader protocol, dat de gemeenschappelijke interface definieert: load_file(), load_stream() en load_bytes(). De create_reader()-fabrieksfunctie geeft de juiste lezer terug op basis van de bestandsextensie:
from aspose.words_foss.reader_factory import create_reader
reader = create_reader("data.doc") # returns DocFileReader
reader.load_file("data.doc")Tips en best practices
- Gebruik de high-level
Document("file.doc")constructor voor de meeste workflows — hij behandelt de lezerselectie automatisch. - Gebruik
DocFileReaderCorealleen wanneer je directe toegang tot de binaire parse-laag nodig hebt. - Voor bestanden die ontvangen worden als
bytes(bijv. van HTTP-uploads), geef de voorkeur aanload_bytes()om het schrijven van tijdelijke bestanden te vermijden. - De DOC-lezer ondersteunt dezelfde round-trip-fideliteit als de DOCX-lezer voor tekst, alinea’s en basisopmaak.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
load_file() werpt FileNotFoundError | Onjuist bestandspad | Controleer of het pad bestaat vóór het aanroepen |
| Vervormde tekst na het laden | Bestand is geen geldige OLE2-binary | Bevestig dat het bestand echt .doc-formaat is, niet een hernoemde .docx |
| Ontbrekende opmaak in de uitvoer | Sommige geavanceerde DOC-functies worden nog niet ondersteund | Controleer limitations.md op niet-ondersteunde functies |
FAQ
Wat is het verschil tussen DocFileReader en DocFileReaderCore?
DocFileReaderCore behandelt de low-level binaire parsing van het OLE2-formaat. DocFileReader breidt dit uit door de to_light_document()-methode toe te voegen die een volledige LDM Document produceert die geschikt is voor conversie.
Kan ik een DOC-bestand laden vanuit een stream?
Ja. Gebruik DocFileReaderCore.load_stream(stream) of geef een bestand-achtig object door. Dit is handig voor webtoepassingen waarbij bestanden als streams worden geüpload.
Ondersteunt de DOC-lezer wachtwoordbeveiligde bestanden?
Wachtwoordbeveiligde .doc bestanden worden momenteel niet ondersteund. De lezer zal een uitzondering werpen als het bestand versleuteld is.
API Reference Samenvatting
| Klasse / Methode | Beschrijving |
|---|---|
DocFileReader | Volledige DOC-lezer met LDM-bouwmogelijkheid |
DocFileReader.to_light_document() | Converteert geparseerde DOC-gegevens naar een LDM-document |
DocFileReaderCore | Kernlezer voor Word 97-2003 (.doc) binaire bestanden |
DocFileReaderCore.load_file(filepath) | Laad een DOC-bestand vanaf een pad |
DocFileReaderCore.load_stream(stream) | Laad een DOC-bestand vanuit een stream |
DocFileReaderCore.load_bytes(data) | Laad een DOC-bestand vanuit een bytes-buffer |
DocumentFormatReader | Protocolinterface voor alle documentlezers |
create_reader(path) | Factory die de juiste lezer retourneert voor een bestandsextensie |