Укажите параметры загрузки

При загрузке документа вы можете задать некоторые дополнительные свойства. Aspose.Words предоставляет вам класс LoadOptions, который позволяет более точно управлять процессом загрузки. Некоторым форматам загрузки соответствует класс, который содержит параметры загрузки для этого формата загрузки, например, есть PdfLoadOptions для загрузки в формат PDF или TxtLoadOptions для загрузки в формат TXT. В этой статье приведены примеры работы с параметрами класса LoadOptions.

Установите версию Microsoft Word, чтобы изменить внешний вид

Различные версии приложения Microsoft Word могут отображать документы по-разному. Например, существует хорошо известная проблема с документами OOXML, такими как DOCX или DOTX, созданными с помощью WPS Office. В таком случае основные элементы разметки документа могут отсутствовать или интерпретироваться по-другому, что приводит к тому, что в Microsoft Word 2019 такой документ отображается иначе, чем в Microsoft Word 2010.

По умолчанию Aspose.Words открывает документы по правилам Microsoft Word 2019 года. Если вам нужно, чтобы загрузка документов происходила так, как это происходило бы в одной из предыдущих версий приложения Microsoft Word, вам следует явно указать желаемую версию, используя свойство msw_version класса LoadOptions.

В следующем примере кода показано, как установить версию Microsoft Word с параметрами загрузки:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
# Create a new LoadOptions object, which will load documents according to MS Word 2019 specification by default
# and change the loading version to Microsoft Word 2010.
loadOptions = aw.loading.LoadOptions()
loadOptions.msw_version = aw.settings.MsWordVersion.WORD2010
doc = aw.Document(docs_base.my_dir + "Document.docx", loadOptions)
doc.save(docs_base.artifacts_dir + "WorkingWithLoadOptions.set_ms_word_version.docx")

Установите языковые настройки, чтобы изменить внешний вид

Особенности отображения документа в Microsoft Word зависят не только от версии приложения и значения свойства msw_version, но и от языковых настроек. Microsoft Word документы могут отображаться по-разному в зависимости от настроек диалогового окна “Языковые настройки Office”, которые можно найти в разделе “Файл → Параметры → Язык”. С помощью этого диалогового окна пользователь может выбрать, например, основной язык, языки проверки подлинности, языки отображения и так далее. Aspose.Words предоставляет свойство language_preferences в качестве эквивалента этого диалогового окна. Если выходные данные Aspose.Words отличаются от выходных данных Microsoft Word, установите соответствующее значение для EditingLanguage – это может улучшить качество выходного документа.

В следующем примере кода показано, как задать японский язык как EditingLanguage:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
loadOptions = aw.loading.LoadOptions()
# Set language preferences that will be used when document is loading.
loadOptions.language_preferences.add_editing_language(aw.loading.EditingLanguage.JAPANESE)

Используйте TempFolder, чтобы избежать исключения из памяти

Aspose.Words поддерживает чрезвычайно большие документы, содержащие тысячи страниц с богатым содержанием. Загрузка таких документов может потребовать значительных затрат RAM. В процессе загрузки Aspose.Words требуется еще больше памяти для хранения временных структур, используемых для синтаксического анализа документа.

Если при загрузке документа возникает проблема с исключением “Нехватка памяти”, попробуйте использовать свойство temp_folder. В этом случае Aspose.Words сохранит некоторые данные во временных файлах вместо памяти, и это может помочь избежать такого исключения.

В следующем примере кода показано, как установить temp_folder:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
loadOptions = aw.loading.LoadOptions()
loadOptions.temp_folder = docs_base.artifacts_dir
doc = aw.Document(docs_base.my_dir + "Document.docx", loadOptions)

Задайте кодировку явно

Большинство современных форматов документов хранят свое содержимое в Юникоде и не требуют специальной обработки. С другой стороны, все еще существует множество документов, в которых используется некоторая кодировка, предшествовавшая Юникоду, и иногда либо отсутствует информация о кодировке, либо она даже не поддерживается по своей природе. Aspose.Words пытается автоматически определить соответствующую кодировку по умолчанию, но в редких случаях вам может потребоваться использовать кодировку, отличную от той, которая определяется нашим алгоритмом распознавания кодировок. В этом случае используйте свойство encoding, чтобы получить или задать кодировку.

В следующем примере кода показано, как настроить кодировку таким образом, чтобы она переопределяла автоматически выбранную кодировку:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
loadOptions = aw.loading.LoadOptions()
loadOptions.encoding = "utf-7"
doc = aw.Document(docs_base.my_dir + "Encoded in UTF-7.txt", loadOptions)

Загружайте зашифрованные документы

Вы можете загружать документы Word, зашифрованные паролем. Для этого используйте специальный конструктор overload, который принимает объект LoadOptions. Этот объект содержит свойство password, которое определяет строку пароля.

В следующем примере кода показано, как загрузить документ, зашифрованный паролем:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document(docs_base.my_dir + "Encrypted.docx", aw.loading.LoadOptions("docPassword"))

Если вы заранее не знаете, зашифрован ли файл, вы можете использовать класс FileFormatUtil, который предоставляет служебные методы для работы с форматами файлов, такие как определение формата файла или преобразование расширений файлов в/из перечислений форматов файлов. Чтобы определить, зашифрован ли документ и требуется ли пароль для его открытия, используйте свойство is_encrypted.

В следующем примере кода показано, как проверить, зашифрован документ или нет:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
info = aw.FileFormatUtil.detect_file_format(docs_base.my_dir + "Encrypted.docx")
print(info.is_encrypted)