کار با DOCX Reader

کار با خواننده DOCX

کلاس DocumentReader فایل‌های Office Open XML (.docx) را می‌خواند و یک ساختار دادهٔ انتزاعی — مدل سند سبک (LDM) — تولید می‌کند. این کلاس پاراگراف‌ها، جدول‌ها، اشکال، تصاویر و قالب‌بندی را مدیریت می‌کند و محتوا را برای دستکاری یا تبدیل در دسترس می‌گذارد.


خواندن یک فایل DOCX

ساده‌ترین روش استفاده از سازندهٔ Document است که به‌صورت خودکار DocumentReader را برای فایل‌های .docx انتخاب می‌کند:

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)

DocumentReader معماری

DocumentReader از دو میکسین برای تقسیم مسئولیت‌ها استفاده می‌کند:

ComponentRole
DocumentReaderتحلیل‌گر اصلی DOCX — بخش‌های XML را از بسته OPC می‌خواند
LdmBuilderMixinمدل سبک سند را از داده‌های تجزیه‌شده می‌سازد
ShapeParserMixinعناصر رسم و شکل جاسازی‌شده در سند را تجزیه می‌کند

هر سه به‌صورت داخلی با هم کار می‌کنند — شما از طریق Document API با نتیجه تعامل دارید.


استخراج متن

از ویژگی text در یک سند بارگذاری‌شده برای استخراج متن ساده بدون ذخیره در فایل استفاده کنید:

import aspose.words_foss as aw

doc = aw.Document("contract.docx")
text = doc.text
print(text[:500])

کار با پاراگراف‌ها و قالب‌بندی

دسترسی به ویژگی‌های سطح پاراگراف از طریق 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}")

هر Run ویژگی‌های قلم (ضخیم، کج، اندازه، رنگ) را که از XML DOCX تجزیه شده‌اند، حمل می‌کند.


کار با اشکال و تصاویر

ShapeParserMixin هنگام تجزیه عناصر رسم را استخراج می‌کند. اشکال به‌عنوان اشیاء ShapeNode در محتوای پاراگراف در LDM ظاهر می‌شوند:

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}")

نکات و بهترین شیوه‌ها

  • از Document("file.docx") برای گردش‌کارهای استاندارد استفاده کنید — به‌صورت خودکار انتخاب خواننده، اعتبارسنجی بسته و ساختار LDM را مدیریت می‌کند.
  • برای ورودی مبتنی بر جریان (آپلودهای وب)، یک شی شبیه-فایل را به سازندهٔ Document پاس دهید.
  • برای فایل‌های حاوی جدول‌ها، از طریق doc.tables یا doc.all_tables به آن‌ها دسترسی پیدا کنید.
  • برای پردازش دسته‌ای، از همان فرآیند Python مجدداً استفاده کنید تا از هزینهٔ مکرر وارد کردن جلوگیری شود.

مشکلات رایج

مسئلهعلترفع
فایل بار نمی‌شود (استثنا)آرشیو ZIP خراب یا ناقصتأیید کنید که فایل یک .docx معتبر (ZIP-مبتنی بر بسته OPC) است
تصاویر گمشده در خروجیقطعات تصویر در بسته جاسازی نشده‌اندبررسی کنید که DOCX شامل تصاویر جاسازی‌شده (نه لینک‌شده) باشد
محتوا گمشده در خروجیقطعات مورد نیاز XML در بسته موجود نیستندممکن است فایل قطع شده باشد؛ دوباره از برنامه منبع صادر کنید

FAQ

مدل سند Light (LDM) چیست؟

LDM نمایهٔ داخلی است که بین همهٔ خواننده‌ها به‌اشتراک‌گذاری می‌شود. این مدل جزئیات خاص فرمت‌ها (OPC XML، باینری OLE2) را به‌صورت ساختاری مشترک شامل بخش‌ها، پاراگراف‌ها، ران‌ها، جدول‌ها و اشکال انتزاع می‌کند.

آیا DocumentReader می‌تواند فایل‌های DOCM (macro-enabled) را پردازش کند؟

فایل‌های Macro-enabled .docm از همان ساختار OPC استفاده می‌کنند. خواننده می‌تواند محتوای سند را تجزیه کند، اما ماکروها حفظ یا اجرا نمی‌شوند.

چگونه خواننده اسناد بزرگ را مدیریت می‌کند؟

خواننده بخش‌های XML را به‌صورت متوالی پردازش می‌کند. مصرف حافظه با اندازه سند مقیاس می‌یابد. برای اسناد بسیار بزرگ، پردازش بخش‌ها به‌صورت جداگانه را در نظر بگیرید.


API Reference خلاصه

کلاس / متدتوضیح
DocumentReaderاسناد DOCX را می‌خواند و ساختارهای دادهٔ انتزاعی تولید می‌کند
LdmBuilderMixinMixin ارائه‌دهندهٔ روش‌های ساخت مدل سند Light
ShapeParserMixinMixin ارائه‌دهندهٔ روش‌های تجزیهٔ رسم/شکل
Documentیک سند Word را نشان می‌دهد (ریشه LDM)
create_reader(path)کارخانه‌ای که خوانندهٔ مناسب را برای پسوند فایل برمی‌گرداند

همچنین ببینید:

 فارسی