Bekerja dengan DOCX Reader
Bekerja dengan DOCX Reader
Pengelolaan DocumentReader kelas membaca Office Open XML (.docx) dan menghasilkan struktur data abstrak (LDM). Ini menangani paragraf, tabel, bentuk, gambar, dan pemformatan, membuat konten tersedia untuk dimanipulasi atau dikonversi.
Membaca File DOCX
Pendekatan paling sederhana adalah menggunakan Document Konstruktor, yang secara otomatis memilih DocumentReader untuk .docx file:
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)Arsitektur DocumentReader
DocumentReader menggunakan dua mixin untuk membagi tanggung jawab:
| Komponen | Peran dan peran |
|---|---|
DocumentReader | Parser DOCX utama membaca bagian XML dari paket OPC |
LdmBuilderMixin | Membangun Model Dokumen Ringan dari data yang diuraikan |
ShapeParserMixin | Parses elemen gambar dan bentuk yang tertanam dalam dokumen |
Ketiga-tiga bekerja sama secara internal Anda berinteraksi dengan hasil melalui Document API.
Mengekstrak Teks
Penggunaan get_text() pada dokumen yang dimuat untuk mengekstrak teks kosong tanpa menyimpan ke file:
import aspose.words_foss as aw
doc = aw.Document("contract.docx")
text = doc.get_text()
print(text[:500])Bekerja dengan Paragraf dan Format
Akses properti tingkat paragraf melalui 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}")Setiap Run membawa sifat font (bold, italic, size, color) yang di-parse dari DOCX XML.
Menggunakan Bentuk dan Gambar
Pengelolaan ShapeParserMixin ekstrak elemen gambar selama parsing. Bentuk muncul dalam LDM sebagai ShapeNode objek dalam isi paragraf:
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 dan Praktik Terbaik
- Penggunaan
Document("file.docx")untuk alur kerja standar ia menangani pemilihan pembaca, validasi paket, dan konstruksi LDM secara otomatis. - Untuk input berbasis stream (upload web), kirimkan objek seperti file ke
DocumentKonstruksi. - Untuk file dengan tabel, akses mereka melalui
doc.tablesatau:doc.all_tables. - Untuk pemrosesan batch, gunakan ulang proses Python yang sama untuk menghindari overhead impor berulang.
Masalah Umum
| Isu | Penyebabnya | Perbaiki |
|---|---|---|
| File tidak dimuat (ecception) | Arsip ZIP rusak atau tidak lengkap | Memeriksa file adalah valid .docx (paket OPC berbasis ZIP) |
| Gambar yang hilang dalam output | Bagian gambar yang tidak tertanam dalam bungkus | Periksa apakah DOCX berisi gambar yang tertanam (tidak terkait) |
| Kekurangan isi dalam output | Bagian XML yang diperlukan tidak ada di paket | File dapat dipotong; ekspor kembali dari aplikasi sumber |
FAQ
Apa itu Model Dokumen Ringan (LDM)?
LDM adalah representasi internal yang dibagikan ke semua pembaca. Ini menguraikan detail spesifik format (OPC XML, biner OLE2) menjadi struktur umum dari bagian, paragraf, run, tabel, dan bentuk.
Dapatkah DocumentReader menangani file DOCM (makro-enabled)?
Aktifkan makro .docm file menggunakan struktur OPC yang sama. Pembaca dapat menganalisis isi dokumen, tetapi makro tidak disimpan atau dieksekusi.
Bagaimana pembaca menangani dokumen besar?
Reader memproses bagian XML secara berurutan. Penggunaan memori berkisar dengan ukuran dokumen. Untuk dokumen yang sangat besar, pertimbangkan untuk mengolah bagian-bagian secara individual.
Ringkasan Referensi API
| Kelas / Metode | Deskripsi |
|---|---|
DocumentReader | Membaca dokumen DOCX dan menghasilkan struktur data abstrak |
LdmBuilderMixin | Metode konstruksi model dokumen ringan yang menyediakan campuran |
ShapeParserMixin | Campuran yang menyediakan metode gambar/parsing bentuk |
Document | Menunjukkan dokumen Word (akar LDM) |
create_reader(path) | Pabrik yang mengembalikan pembaca yang benar untuk ekstensi file |