Membangun Model Dokumen Ringan dengan DocumentReader

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

PersyaratanDetail
Python3.9 atau lebih baru
Packageaspose-words-foss (berlisensi MIT)
InputSebuah file .docx, aliran, atau bytes
pip install aspose-words-foss

Memuat 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(), atau load_bytes() sebelum memanggil to_light_document() — memanggil to_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_paragraphs untuk iterasi datar atas semua paragraf; gunakan doc.sections ketika Anda perlu bekerja per seksi.
  • DocumentReader mengimplementasikan LdmBuilderMixin, yang berarti to_light_document() tersedia sebagai metode mixin — antarmuka yang sama dibagikan dengan kelas pembaca lain dalam perpustakaan.

Masalah Umum

MasalahPenyebabPerbaikan
Kosong doc.sections setelah dimuatFile bukan DOCX yang validVerifikasi file dapat dibuka di Word; periksa apakah tidak dilindungi kata sandi
doc.all_paragraphs kosongDokumen 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 konversiPanggil 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 / MetodeDeskripsi
DocumentReaderMembaca 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
LdmBuilderMixinMixin yang menyediakan to_light_document()
Document.sectionsDaftar bagian dalam dokumen
Document.all_paragraphsDaftar datar semua paragraf
Document.textIsi teks polos lengkap dokumen
Document.page_countJumlah halaman
Document.headings(max_level)Daftar paragraf heading hingga max_level

Lihat Juga

 Bahasa Indonesia