بناء نموذج وثيقة خفيفة باستخدام DocumentReader
بناء نموذج وثيقة خفيفة باستخدام DocumentReader
DocumentReader هو نقطة الدخول لقراءة ملفات DOCX في Aspose.Words FOSS . إنه يقبل المدخلات كطريق ملف، أو تيار إدخال/إخراج، او بايت خام ثم يعرض المعلومات. وثيقة كـ light_document_model.Document (LDM) كائن Python مُهيكّل شجرة سهلة التفتيش والتحويل.
المعايير
| متطلبات | التفاصيل |
|---|---|
| Python | 3.9 or later |
| حزمة | aspose-words-foss (مصدر من MIT) |
| المدخلات | (أ) .docx ملف، أو بث، bytes |
pip install aspose-words-fossتحميل من مسار ملف
DocumentReader.load_file(filepath) يقرأ ملف DOCX عن طريق المسار. to_light_document() بعد ذلك للحصول على تمثيل 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))تحميل من تيار
DocumentReader.load_stream(stream) يقبل أي ملف مثل الكائن مع a read() طريقة. هذا مفيد للبيانات القادمة من ردود HTTP ، أو أرشيف ZIP، أو عوائق الذاكرة.
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))تحميل من بايتز
DocumentReader.load_bytes(data) يقبل بـ bytes أو bytearray المادة. الاستخدام هذا عندما يكون محتوى DOCX موجود بالفعل في الذاكرة (على سبيل المثال ، تم الحصول عليه من قاعدة بيانات) أو بنيت برمجياً).
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])التنقل في هيكل LDM
بعد الإتصال to_light_document(),، والعودة Document الكائن يعرض المادة. شجرة المستند الكامل:
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)قراءة النص الكامل للوثيقة
Document.text يعيد محتوى الوثيقة الكامل في النص العادي،, تكوين كل نص الفقرة عبر جميع الأقسام:
reader = DocumentReader()
reader.load_file("data/report.docx")
doc = reader.to_light_document()
print(doc.text[:500])نصائح وأفضل الممارسات
- دائماً اتصل
load_file(),load_stream(),أو ،load_bytes()قبل الاتصالto_light_document()الإتصالto_light_document()على قارئ غير محمل قد يثير خطأ أو يعيد وثيقة فارغة. - استخدام
load_bytes()عندما تتحكم في دورة حياة المستندات في الذاكرة؛ فإنه يتجنب فتح ملفات المفاتيح. - استخدام
doc.all_paragraphsللتكرار المفروض على جميع الفقرات، استخدام:doc.sectionsعندما تحتاج إلى العمل قسمًا بعد قسم. DocumentReaderالأدواتLdmBuilderMixin,، مما يعنيto_light_document()متاح كوسيلة مزيج نفس الواجهة مشتركة مع قارئ آخر في المكتبة.
القضايا المشتركة
| القضية | السبب | إصلاح |
|---|---|---|
فارغة doc.sections بعد التحميل | الملف ليس DOCX صالحاً | تحقق من أن الملف يفتح في Word؛ تأكد أنه غير محمي بكلمة مرور |
doc.all_paragraphs خالي | لا يوجد في المستند نص بالجسد (على سبيل المثال فقط العناوين/البعاء) | التحقق doc.header_paragraphs و doc.footer_paragraphs بدلاً من ذلك |
AttributeError في to_light_document() | طريقة التحميل غير مسموعة قبل التحويل | اتصل بأحد load_file(), load_stream(),أو ، load_bytes() أولاً |
FAQ
ما هو LDM؟?
نموذج الوثيقة الخفيفة (light_document_model.Document) هو مجرد،, شجرة الكائن الأصلية في Python تمثل مستند Word. فهي تفصل منطق المستندات من تنسيق DOCX الثنائي و صممت للتلاعب البرمجية بسهولة.
هل يمكنني تعديل LDM و إعادة كتابته إلى DOCX؟?
نعم، بعد تعديل الملفات doc أرسله إلى (أوبجيك) LdmDocxWriter.write(doc, path) لإنتاج ملف DOCX محدث. انظر الموقع دليل LdmDocxWriter لمزيد من التفاصيل.
ما الذي يجعلكِ LdmBuilderMixin أضيف؟?
LdmBuilderMixin يقدم المادة التالية: to_light_document() طريقة. DocumentReader ويرث منه لذا يمكنك دائما الوصول إلى هذه الطريقة عبر مثال القارئ.
إشارة API
| الفئة / الطريقة | وصف |
|---|---|
DocumentReader | يقرأ إدخال DOCX و يبني تمثيل LDM |
DocumentReader.load_file(filepath) | تحميل ملف DOCX حسب المسار |
DocumentReader.load_stream(stream) | تحميلات من تيار شبيه بالملف |
DocumentReader.load_bytes(data) | الحمولات من a bytes المادة |
DocumentReader.to_light_document() | يعيد الوثيقة المحمولة كـ LDM Document |
LdmBuilderMixin | خليط يوفّر to_light_document() |
Document.sections | قائمة الأقسام في الوثيقة |
Document.all_paragraphs | قائمة شاسعة لجميع الفقرات |
Document.text | محتوى الوثيقة الكامل في النص العادي |
Document.page_count | عدد الصفحات |
Document.headings(max_level) | قائمة بالصفوف حتى max_level |