ذخیرهسازی و استخراج اسناد
ذخیره و صادرات اسناد
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 | سند را به یک فایل، جریان یا هدف خروجی در قالب انتخاب شده مینویسد. |
SaveFormat | Enum شناساییکننده قالب هدف برای عملیات ذخیرهسازی. |
SaveOptions | کلاس پایهٔ انتزاعی برای پیکربندی ذخیرهسازی مختص فرمت؛ CreateSaveOptions(saveFormat) زیرکلاس منطبق را برمیگرداند. |
OoxmlSaveOptions | گزینهها برای DOCX، DOCM، DOTX، DOTM و Flat OPC — رمز عبور، سازگاری، فشردهسازی. |
MarkdownSaveOptions | گزینهها برای خروجی Markdown — رندر لیست/لینک، مدیریت تصویر. |
TxtSaveOptions / TxtSaveOptionsBase | گزینهها برای خروجی متن ساده — رمزگذاری، شکست خط، طرح جدول. |
FileFormatUtil.DetectFileFormat | قالب فایل را پیش از بارگذاری یا تبدیل آن شناسایی میکند. |
FileFormatUtil.SaveFormatToExtension / ExtensionToSaveFormat | تبدیل بین مقدار SaveFormat و پسوند فایل. |