ذخیره‌سازی و استخراج اسناد

ذخیره‌سازی و استخراج اسناد

ذخیره و صادرات اسناد

Document.Save یک سند را به یک فایل یا جریان در قالب هدف می‌نویسد. قالب یا از پسوند فایل استنتاج می‌شود، یا به‌صورت صریح به عنوان مقدار SaveFormat داده می‌شود، یا توسط یک زیرکلاس SaveOptions — OoxmlSaveOptions، MarkdownSaveOptions یا TxtSaveOptions — برای کنترل خاص قالب هدایت می‌شود. این راهنما به overloadهای Save، enum SaveFormat، گزینه‌های ذخیره‌سازی OOXML، صادرات Markdown و متن ساده، و تشخیص قالب قبل از تبدیل می‌پردازد.


ذخیره‌سازی با Document.Save

ساده‌ترین فراخوانی، Document.Save(fileName)، قالب هدف را از پسوند فایل استنتاج می‌کند. Save(fileName, saveFormat) قالب را صرف‌نظر از پسوند به‌صورت صریح مشخص می‌کند، و Save(fileName, saveOptions) (یا overloadهای منطبق Stream) یک زیرکلاس SaveOptions را برای تنظیمات خاص قالب می‌پذیرد. SaveOptions.CreateSaveOptions(saveFormat) یک کارخانهٔ ایستاتیک است که زیرکلاس گزینه‌های مناسب را برای یک SaveFormat معین برمی‌گرداند، به‌طوری که پیش‌تنظیمات آن از پیش تنظیم شده‌اند.


انتخاب قالب با SaveFormat

enum SaveFormat تمام شناسه‌های قالب‌های ذخیره‌سازی که کتابخانه تشخیص می‌دهد را فهرست می‌کند. Document.Save به‌صورت کامل هم به‌طرف و هم از فرمت‌های اصلی سند این نسخه — DOCX، DOCM، DOTX، DOTM و Flat OPC (به‌اضافهٔ انواع ماکرو‌پشتیبانی و قالب آن) — و همچنین Markdown و متن ساده می‌نویسد. FileFormatUtil.SaveFormatToExtension(saveFormat) و ExtensionToSaveFormat(extension) بین enum و رشتهٔ پسوند فایل تبدیل می‌کنند.

برخی مقادیر SaveFormat در enum برای کامل‌گی API وجود دارند اما مربوط به قالب‌هایی هستند که این نسخهٔ کاهش‌یافته و متن‌باز خواننده یا نویسندهٔ عملی برای آن‌ها پیاده‌سازی نکرده است — تلاش برای ذخیره به یکی از این قالب‌ها خروجی‌ای تولید می‌کند که معادل سند منبع نیست. برای دور‌زدن قابل اطمینان، به قالب‌های نام‌برده در بالا پایبند باشید.


گزینه‌های OOXML: DOCX، DOCM، DOTX، DOTM، و Flat OPC

OoxmlSaveOptions ذخیره‌سازی را به هر یک از قالب‌های Open XML پیکربندی می‌کند. ویژگی SaveFormat آن، گونهٔ خاصی را که باید نوشته شود انتخاب می‌کند؛ Password یک رمز عبور باز بر روی فایل ذخیره‌شده تنظیم می‌گیرد (بدون در نظر گرفتن محدودیت‌های ویرایشی Document.Protect)؛ Compliance سطح سخت‌گیری OOXML را انتخاب می‌کند؛ و CompressionLevel / Zip64Mode بسته‌بندی ZIP زیرین را کنترل می‌کنند. یکی را با new OoxmlSaveOptions(saveFormat) یا از طریق SaveOptions.CreateSaveOptions(saveFormat) بسازید.


صادرات به Markdown

MarkdownSaveOptions یک صادرات Markdown را کنترل می‌کند: ListExportMode و LinkExportMode نحوهٔ رندر لیست‌ها و پیوندهای ابرمتنی را تعیین می‌کنند، ImagesFolder / ImagesFolderAlias مکان نوشتن تصاویر استخراج‌شده و چگونگی ارجاع به آن‌ها را کنترل می‌کنند، ExportImagesAsBase64 به‌جای آن‌ها را به‌صورت درون‌خطی جاسازی می‌کند، و TableContentAlignment بر نشانه‌گذاری جدول تولید شده تأثیر می‌گذارد. یک نمونهٔ MarkdownSaveOptions را به Document.Save(fileName, saveOptions) با نام فایل .md پاس دهید، یا SaveFormat آن را به‌طور صریح تنظیم کنید.


صادرات به متن ساده

TxtSaveOptions (از طریق TxtSaveOptionsBase پایهٔ آن، که با MarkdownSaveOptions مشترک است) خروج به متن ساده را کنترل می‌کند: Encoding رمزگذاری کاراکترها را تنظیم می‌کند، ParagraphBreak رشتهٔ پایان خط را تنظیم می‌کند، MaxCharactersPerLine خطوط بلند را بسته‌بندی می‌کند، SimplifyListLabels نکات/اعداد لیست را به کاراکترهای ساده نرمال می‌کند، و PreserveTableLayout سعی می‌کند ستون‌های جدول را با استفاده از فضاها هم‌تراز نگه دارد.


تشخیص یک قالب قبل از تبدیل

قبل از تبدیل فایلی که قالب آن را هنوز نمی‌دانید، FileFormatUtil.DetectFileFormat(fileName) یک FileFormatInfo حاوی LoadFormat شناسایی‌شده برمی‌گرداند. این را با FileFormatUtil.LoadFormatToSaveFormat(loadFormat) ترکیب کنید تا پیش از تلاش برای Document.Save تصمیم بگیرید آیا یک مسیر دورانی از طریق قالب‌های پشتیبانی‌شدهٔ این نسخه امکان‌پذیر است یا خیر.


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

  • به‌جای بارگذاری ساده Save(fileName, saveFormat)، هر زمان که نیاز به کنترل رفتار خاص فرمت مانند رندر لیست‌های Markdown یا فشرده‌سازی OOXML داشته باشید، از Save(fileName, saveOptions) استفاده کنید.
  • برای فایلی که با رمز عبور باز محافظت می‌شود، OoxmlSaveOptions.Password را تنظیم کنید؛ این متفاوت از Document.Protect است که ویرایش را محدود می‌کند اما فایل را رمزنگاری نمی‌کند.
  • برای یک فایل Markdown تک‌فایل مستقل، MarkdownSaveOptions.ExportImagesAsBase64 را انتخاب کنید، یا زمانی که می‌خواهید یک پوشه حاوی فایل‌های تصویر استخراج‌شده همراه با Markdown داشته باشید، ImagesFolder را استفاده کنید.
  • به‌جای انتخاب دستی کلاس گزینه‌های مشخص، وقتی فرمت هدف در زمان اجرا تعیین می‌شود، SaveOptions.CreateSaveOptions(saveFormat) را فراخوانی کنید.
  • قبل از تبدیل، فرمت هدف را با FileFormatUtil تأیید کنید به‌جای اتکا به پسوند فایل ساده که ممکن است نادرست یا گمراه‌کننده باشد.

مشکلات رایج

مشکلدلیلراه‌حل
Save(fileName) فرمت نادرست را انتخاب می‌کندپسوند فایل با فرمت مورد نظر مطابقت نداردبرای صریح کردن فرمت از Save(fileName, saveFormat) یا Save(fileName, saveOptions) استفاده کنید
فایل OOXML ذخیره‌شده با رمز عبور باز نمی‌شودOoxmlSaveOptions.Password پیش از ذخیره‌سازی تنظیم نشده بودیک OoxmlSaveOptions بسازید، Password را تنظیم کنید، و آن را به Save پاس دهید
صادرات Markdown به‌طور غیرمنتظره‌ای فایل‌های تصویر را پراکنده می‌کندرفتار پیش‌فرض MarkdownSaveOptions تصاویر را به فایل‌ها استخراج می‌کندExportImagesAsBase64 = true را برای یک فایل تک‌منبع تنظیم کنید، یا ImagesFolder را برای کنترل محل ذخیره‌سازی تصاویر تنظیم کنید
صادرات متن ساده هم‌ترازی ستون‌های جدول را از دست می‌دهدTxtSaveOptions.PreserveTableLayout در حالت پیش‌فرض خود باقی می‌ماندقبل از ذخیره، PreserveTableLayout = true را تنظیم کنید

FAQ

چگونه یک سند را صرف‌نظر از پسوند فایل آن، در قالب خاصی ذخیره کنم؟

با مقدار صریح SaveFormat، Save(fileName, saveFormat) را فراخوانی کنید، یا Save(fileName, saveOptions) را با زیرکلاس SaveOptions منطبق استفاده کنید.

این نسخه چه قالب‌هایی را به‌صورت دو-طرفه می‌تواند بخواند و بنویسد؟

DOCX، DOCM، DOTX، DOTM، Flat OPC (به‌همراه نسخه‌های دارای ماکرو و قالب آن)، Markdown و متن ساده.

چگونه می‌توان یک فایل ذخیره‌شده را با رمز عبور محافظت کرد؟

مقدار Password را بر روی یک نمونه OoxmlSaveOptions تنظیم کنید و آن را به Document.Save(fileName, saveOptions) پاس دهید.

چگونه می‌توان انتهای خطوط در یک فایل متنی صادرشده را کنترل کرد؟

قبل از ذخیره‌سازی، ParagraphBreak را بر روی یک نمونه TxtSaveOptions تنظیم کنید.

چگونه می‌توانم پیش از تبدیل، فرمت یک فایل را بررسی کنم؟

متد FileFormatUtil.DetectFileFormat(fileName) را فراخوانی کنید و FileFormatInfo.LoadFormat بازگردانده شده را بخوانید.


API Reference خلاصه

کلاس/متدتوضیح
Document.Saveسند را به یک فایل، جریان یا هدف خروجی در قالب انتخاب شده می‌نویسد.
SaveFormatEnum شناسایی‌کننده قالب هدف برای عملیات ذخیره‌سازی.
SaveOptionsکلاس پایهٔ انتزاعی برای پیکربندی ذخیره‌سازی مختص فرمت؛ CreateSaveOptions(saveFormat) زیرکلاس منطبق را برمی‌گرداند.
OoxmlSaveOptionsگزینه‌ها برای DOCX، DOCM، DOTX، DOTM و Flat OPC — رمز عبور، سازگاری، فشرده‌سازی.
MarkdownSaveOptionsگزینه‌ها برای خروجی Markdown — رندر لیست/لینک، مدیریت تصویر.
TxtSaveOptions / TxtSaveOptionsBaseگزینه‌ها برای خروجی متن ساده — رمزگذاری، شکست خط، طرح جدول.
FileFormatUtil.DetectFileFormatقالب فایل را پیش از بارگذاری یا تبدیل آن شناسایی می‌کند.
FileFormatUtil.SaveFormatToExtension / ExtensionToSaveFormatتبدیل بین مقدار SaveFormat و پسوند فایل.

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

 فارسی