Membangun Model Dokumen Ringan dengan DocumentReader
Membangun Model Dokumen Ringan dengan DocumentReader
DocumentReader adalah titik masuk untuk membaca file DOCX di Aspose.Words FOSS. Ia menerima input berupa jalur file, aliran I/O, atau byte mentah, kemudian mengekspose dokumen sebagai light_document_model.Document (LDM) — sebuah pohon objek Python terstruktur yang mudah untuk diperiksa dan diubah.
Prasyarat
| Persyaratan | Detail |
|---|---|
| Python | 3.9 atau lebih baru |
| Package | aspose-words-foss (berlisensi MIT) |
| Input | Sebuah file .docx, aliran, atau bytes |
pip install aspose-words-fossMemuat dari Jalur File
DocumentReader.load_file(filepath) membaca file DOCX melalui jalur. Panggil to_light_document() setelahnya untuk memperoleh representasi LDM.
from aspose.words_foss import DocumentReader
reader = DocumentReader()
reader.load_file("data/report.docx")
doc = reader.to_light_document()
print("Page count:", doc.page_count)
print("Sections:", len(doc.sections))Memuat dari Aliran
DocumentReader.load_stream(stream) menerima objek mirip file apa pun dengan metode read(). Ini berguna untuk data yang berasal dari respons HTTP, arsip ZIP, atau buffer dalam memori.
from aspose.words_foss import DocumentReader
reader = DocumentReader()
with open("data/report.docx", "rb") as fh:
reader.load_stream(fh)
doc = reader.to_light_document()
print("Paragraphs:", len(doc.all_paragraphs))Memuat dari Byte
DocumentReader.load_bytes(data) menerima objek bytes atau bytearray. Gunakan ini ketika konten DOCX sudah berada di memori (mis. diambil dari basis data atau dibangun secara programatis).
from aspose.words_foss import DocumentReader
with open("data/report.docx", "rb") as fh:
data = fh.read()
reader = DocumentReader()
reader.load_bytes(data)
doc = reader.to_light_document()
print("Text preview:", doc.text[:200])Menavigasi Struktur LDM
Setelah memanggil to_light_document(), objek Document yang dikembalikan menampilkan seluruh pohon dokumen:
from aspose.words_foss import DocumentReader
reader = DocumentReader()
reader.load_file("data/report.docx")
doc = reader.to_light_document()
# Sections
for section in doc.sections:
print("Section paragraphs:", len(section.paragraphs))
# All paragraphs (flat list across all sections)
for para in doc.all_paragraphs:
if para.text.strip():
print(" -", para.text[:80])
# Headings
for heading in doc.headings(max_level=2):
print("H:", heading.text)Membaca Teks Dokumen Lengkap
Document.text mengembalikan konten teks polos lengkap dari dokumen, menggabungkan semua teks paragraf di semua bagian:
reader = DocumentReader()
reader.load_file("data/report.docx")
doc = reader.to_light_document()
print(doc.text[:500])Tips dan Praktik Terbaik
- Selalu panggil
load_file(),load_stream(), atauload_bytes()sebelum memanggilto_light_document()— memanggilto_light_document()pada pembaca yang belum dimuat dapat menimbulkan kesalahan atau mengembalikan dokumen kosong. - Gunakan
load_bytes()ketika Anda mengendalikan siklus hidup dokumen di memori; ini menghindari pembukaan handle file. - Gunakan
doc.all_paragraphsuntuk iterasi datar atas semua paragraf; gunakandoc.sectionsketika Anda perlu bekerja per seksi. DocumentReadermengimplementasikanLdmBuilderMixin, yang berartito_light_document()tersedia sebagai metode mixin — antarmuka yang sama dibagikan dengan kelas pembaca lain dalam perpustakaan.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
Kosong doc.sections setelah dimuat | File bukan DOCX yang valid | Verifikasi file dapat dibuka di Word; periksa apakah tidak dilindungi kata sandi |
doc.all_paragraphs kosong | Dokumen tidak memiliki teks utama (misalnya hanya header/footer) | Periksa doc.header_paragraphs dan doc.footer_paragraphs sebagai gantinya |
AttributeError pada to_light_document() | Metode load tidak dipanggil sebelum konversi | Panggil salah satu load_file(), load_stream(), atau load_bytes() terlebih dahulu |
FAQ
Apa itu LDM?
Model dokumen ringan (light_document_model.Document) adalah pohon objek yang diabstraksi, Python-native, yang mewakili dokumen Word. Ia memisahkan logika dokumen dari format biner DOCX dan dirancang untuk manipulasi programatik yang mudah.
Apakah saya dapat memodifikasi LDM dan menulisnya kembali ke DOCX?
Ya. Setelah memodifikasi doc objek, serahkan ke LdmDocxWriter.write(doc, path) untuk menghasilkan file DOCX yang diperbarui. Lihat Panduan LdmDocxWriter untuk rincian.
Apa yang ditambahkan oleh LdmBuilderMixin?
LdmBuilderMixin menyediakan metode to_light_document(). DocumentReader mewarisinya sehingga Anda selalu mengakses metode ini melalui instance pembaca.
API Reference Ringkasan
| Kelas / Metode | Deskripsi |
|---|---|
DocumentReader | Membaca masukan DOCX dan membangun representasi LDM |
DocumentReader.load_file(filepath) | Memuat file DOCX berdasarkan jalur |
DocumentReader.load_stream(stream) | Muat dari aliran yang mirip file |
DocumentReader.load_bytes(data) | Muat dari objek bytes |
DocumentReader.to_light_document() | Mengembalikan dokumen yang dimuat sebagai LDM Document |
LdmBuilderMixin | Mixin yang menyediakan to_light_document() |
Document.sections | Daftar bagian dalam dokumen |
Document.all_paragraphs | Daftar datar semua paragraf |
Document.text | Isi teks polos lengkap dokumen |
Document.page_count | Jumlah halaman |
Document.headings(max_level) | Daftar paragraf heading hingga max_level |