Збереження та експорт документів
Збереження та експорт документів
Document.Save записує документ у файл або потік у цільовому форматі. Формат або виводиться з розширення файлу, явно вказується як значення SaveFormat, або керується підкласом SaveOptions — OoxmlSaveOptions, MarkdownSaveOptions або TxtSaveOptions — для специфічного налаштування формату. У цьому посібнику розглядаються перевантаження Save, перелік SaveFormat, параметри збереження OOXML, експорт у Markdown та простий текст, а також визначення формату перед конвертацією.
Збереження за допомогою Document.Save
Найпростіший виклик, Document.Save(fileName), визначає цільовий формат за розширенням файлу. Save(fileName, saveFormat) робить формат явним незалежно від розширення, а Save(fileName, saveOptions) (або відповідні перевантаження Stream) приймає підклас SaveOptions для специфічних налаштувань формату. SaveOptions.CreateSaveOptions(saveFormat) — це статична фабрика, яка повертає правильний підклас параметрів для даного SaveFormat з уже встановленими значеннями за замовчуванням.
Вибір формату за допомогою SaveFormat
Перелік SaveFormat містить усі ідентифікатори форматів збереження, які розпізнає бібліотека. Document.Save повністю записує як у, так і з основних форматів документів цього випуску — DOCX, DOCM, DOTX, DOTM та Flat OPC (разом з їхніми макросмонтованими та шаблонними варіантами) — а також Markdown і простий текст. FileFormatUtil.SaveFormatToExtension(saveFormat) і ExtensionToSaveFormat(extension) перетворюють між переліченням та рядком розширення файлу.
Деякі значення SaveFormat присутні в переліченні для повноти API, але відповідають форматам, для яких ця спрощена, open-source версія не реалізує робочий читач або записувач — спроба зберегти у один із таких форматів дає результат, який не еквівалентний вихідному документу. Дотримуйтеся форматів, зазначених вище, для надійного двостороннього обміну.
Параметри 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, saveOptions)замість простогоSave(fileName, saveFormat)перевантаження, коли потрібно керувати поведінкою, специфічною для формату, наприклад рендерингом списків Markdown або стисненням OOXML. - Встановіть
OoxmlSaveOptions.Passwordдля файлу, захищеного відкритим паролем; це окремо відDocument.Protect, який обмежує редагування, але не шифрує файл. - Оберіть
MarkdownSaveOptions.ExportImagesAsBase64для одного самостійного Markdown-файлу, абоImagesFolder, коли потрібна папка з витягнутими файлами зображень поряд з Markdown. - Викликайте
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
Як зберегти документ у конкретному форматі, незалежно від його розширення файлу?
Викличте Save(fileName, saveFormat) з явним значенням 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 | Перелік, що ідентифікує цільовий формат для операції збереження. |
SaveOptions | Абстрактний базовий клас для конфігурації збереження, специфічної для формату; CreateSaveOptions(saveFormat) повертає відповідний підклас. |
OoxmlSaveOptions | Параметри для DOCX, DOCM, DOTX, DOTM та Flat OPC — пароль, сумісність, стиснення. |
MarkdownSaveOptions | Параметри експорту Markdown — відображення списків/посилань, обробка зображень. |
TxtSaveOptions / TxtSaveOptionsBase | Опції для експорту у простому тексті — кодування, розриви рядків, розташування таблиці. |
FileFormatUtil.DetectFileFormat | Визначає формат файлу перед його завантаженням або конвертуванням. |
FileFormatUtil.SaveFormatToExtension / ExtensionToSaveFormat | Конвертує між значенням SaveFormat та розширенням файлу. |