Як завантажити документи Word у .NET
Як завантажити документи Word у .NET
Aspose.Words FOSS for .NET читає документ у пам’ять одразу після створення Document об’єкт — кожен шлях завантаження у бібліотеці проходить через Document’s конструкторські перевантаження та LoadOptions клас. Цей посібник показує, як завантажити документ з файлу або потоку, надати пароль або налаштування, специфічні для формату, і керувати тим, що відбувається, коли під час завантаження зустрічається зовнішній ресурс або документ, який може бути пошкодженим. Aspose.Words FOSS for .NET збирається з вихідного коду та підключається безпосередньо в проєкт, а не встановлюється з пакету — дивіться Посібник зі встановлення для кроків збірки перед виконанням завдань нижче.
Покроковий посібник
Крок 1: Завантажити документ з файлу або потоку
Document має п’ять конструкторів. Document() створює новий порожній документ, а не завантажує його. Document(fileName) завантажує безпосередньо з шляху на диску, а Document(stream) — з будь-якого придатного до читання Stream — корисно, коли джерело не є файлом, наприклад, вміст уже в пам’яті або отриманий через мережеве з’єднання. Обидва мають супутнє перевантаження, яке приймає другий аргумент, Document(fileName, loadOptions) та Document(stream, loadOptions), що є точкою входу для всіх інших завдань у цьому посібнику.
Крок 2: Завантажити документ, захищений паролем
Створіть LoadOptions з паролем перед викликом Document(fileName, loadOptions) (або перевантаженням потоку). new LoadOptions(password) встановлює LoadOptions.Password безпосередньо; альтернативно, встановіть Password на безпараметричному LoadOptions() екземплярі перед передачею. Надішліть пароль заздалегідь, а не спочатку завантажуйте і реагуйте на помилку — Aspose.Words FOSS для .NET потребує пароля для розбору захищеного файлу взагалі, тому немає частково завантаженого стану, який можна відновити.
Крок 3: Застосувати параметри, специфічні для формату, для текстових та Markdown-джерел
Текстові та Markdown-джерела приймають налаштування, які базовий LoadOptions не експонує. TxtLoadOptions додає AutoNumberingDetection і DetectNumberingWithWhitespaces для розпізнавання нумерованих списків у простому тексті, DetectHyperlinks для перетворення голих URL-ів у гіперпосилання, DocumentDirection (LeftToRight, RightToLeft або Auto) для напрямку потоку тексту, а також окремі LeadingSpacesOptions/TrailingSpacesOptions (типу TxtLeadingSpacesOptions/TxtTrailingSpacesOptions) для обробки пробілів на початку та в кінці кожного рядка. MarkdownLoadOptions додає PreserveEmptyLines, ImportUnderlineFormatting і SoftLineBreakCharacter для керування тим, як правила розриву рядків у Markdown відображаються на абзаци та блоки. Обидва підкласи успадковують LoadOptions, тому пароль або зворотний виклик завантаження ресурсів, встановлений у будь-якому з них, поводиться так само, як у базовому класі — передайте екземпляр, специфічний для формату, у Document(fileName, loadOptions) точно так само, як ви б передали простий LoadOptions.
Крок 4: Перенаправляти або перехоплювати зовнішні ресурси під час завантаження
Встановіть LoadOptions.ResourceLoadingCallback у реалізацію IResourceLoadingCallback, коли потрібно контролювати, як зовнішній ресурс, на який посилається документ, розв’язується під час завантаження. Його метод ResourceLoading(args) отримує ResourceLoadingArgs, що описує ResourceType ресурсу (Image, Font, CssStyleSheet або Document) разом із Uri і OriginalUri, і повертає ResourceLoadingAction — Default для звичайного завантаження ресурсу, Skip для пропуску, або UserProvided для підстановки даних, наданих через ResourceLoadingArgs.SetData(data).
Крок 5: Встановити типові мови та поведінку відновлення
Коли метадані мови документа відсутні або ненадійні, встановіть LoadOptions.LanguagePreferences.DefaultEditingLanguage у EditingLanguage значення перед завантаженням і використайте AddEditingLanguage(language) або AddEditingLanguages(languages) на LanguagePreferences для реєстрації додаткових мов, які документ може містити. Для джерел, які можуть бути пошкоджені, встановіть LoadOptions.RecoveryMode у DocumentRecoveryMode значення — None для завантаження без будь-якої спроби відновлення, або TryRecover щоб завантажувач обійшов деякі структурні проблеми замість того, щоб повністю провалити завантаження.
Загальні проблеми та виправлення
Завантаження документа, захищеного паролем, все ще викликає виключення після надання пароля. Переконайтеся, що пароль був встановлений на точний LoadOptions екземпляр, переданий до Document(fileName, loadOptions) (або перевантаження потоку) — через new LoadOptions(password) або шляхом встановлення Password після цього — і що це саме об’єкт, який фактично передається конструктору. A LoadOptions який був створений, але ніколи не переданий до Document не впливає на завантаження.
Налаштування, специфічні для Text або Markdown, здаються не застосовуються. Перевірте, що a TxtLoadOptions or MarkdownLoadOptions екземпляр — не базовий LoadOptions — був переданий до Document конструктора. Тільки підклас відкриває специфічні для формату властивості; передача базового класу компілюється, але безшумно їх відкидає.
Зовнішні ресурси не перехоплюються і не перенаправляються. ResourceLoadingCallback повинен бути встановлений у тому ж LoadOptions об’єкті, переданому до Document конструктора, і його потрібно призначити до виклику load. Призначення після завершення завантаження не має жодного ефекту.
Невірно сформований документ все одно не вдається завантажити після встановлення RecoveryMode. DocumentRecoveryMode.TryRecover дозволяє завантажувачу обійти деякі структурні проблеми в документі, але більш серйозне пошкодження все одно може запобігти успішному завантаженню документа.
Документ, завантажений з Stream поводиться інакше, ніж той самий файл, завантажений за шляхом. Перевірте, що позиція потоку знаходиться на початку, перед передачею її до Document(stream) or Document(stream, loadOptions) — потік, який залишено посередині його вмісту, завантажує лише залишкові байти.
Поширені питання
Як завантажити документ без будь-яких спеціальних параметрів?
Передайте шлях до файлу або Stream безпосередньо до Document(fileName) або Document(stream) — LoadOptions потрібен лише тоді, коли потрібен пароль, налаштування, специфічні для формату, або зворотний виклик.
У чому різниця між LoadOptions, TxtLoadOptions та MarkdownLoadOptions?
TxtLoadOptions і MarkdownLoadOptions обидва успадковуються від LoadOptions і додають налаштування, специфічні для звичайного тексту та джерел Markdown відповідно. Кожна загальна властивість LoadOptions — пароль, кодування, зворотні виклики — залишається доступною в будь-якому підкласі.
Чи можу я завантажити документ безпосередньо з масиву байтів?
Обгорніть байти у MemoryStream і передайте цей потік до Document(stream) або Document(stream, loadOptions) — конструктора, що приймає масив байтів безпосередньо, не існує.
Як я можу керувати тим, що відбувається, коли завантажувач не може розв’язати зовнішній ресурс?
Реалізуйте IResourceLoadingCallback і призначте його LoadOptions.ResourceLoadingCallback. Поверніть ResourceLoadingAction.Skip з ResourceLoading(args), щоб пропустити ресурс, замість того щоб дозволити помилку завантаження.
Чи змінює встановлення RecoveryMode спосіб завантаження коректно сформованого документа?
Ні. DocumentRecoveryMode змінює поведінку лише коли завантажувач справді стикається зі структурними проблемами — добре сформований документ завантажується однаково незалежно від налаштування.