Вкажіть параметри навантаження

При завантаженні документа ви можете встановити додаткові властивості. Aspose.Words Ви з LoadOptions клас, що дозволяє більш точно контролювати процес завантаження. Деякі формати навантаження мають відповідний клас, який містить параметри навантаження для цього формату навантаження, наприклад, є PdfLoadOptions для завантаження у формат PDF або TxtLoadOptions для завантаження до TXT. У статті наведено приклади роботи з опціями роботи LoadOptions клас.

Комплекти Microsoft Word Версія для зміни

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

За замовчуванням Aspose.Words відкриті документи Microsoft Word Правила 2019 Якщо необхідно зробити завантаження документів, як це буде відбуватися в одному з попередніх Microsoft Word версії додатків, ви повинні явно вказати потрібну версію за допомогою MswVersion майно майна LoadOptions клас.

Приклад коду показує, як встановити Microsoft Word версія з опціями завантаження:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// Specify load option to specify MS Word version
LoadOptions loadOptions = new LoadOptions();
loadOptions.setMswVersion(MsWordVersion.WORD_2003);
Document doc = new Document(dataDir + "document.doc", loadOptions);
doc.save(dataDir + "Word2003_out.docx");

Налаштування мовних переваг для зміни

Деталі відображення документа в Microsoft Word залежать не тільки від версії програми і MswVersion значення нерухомості, але також на налаштуваннях мови. Microsoft Word може показувати документи по-різному в залежності від діалогових налаштувань “Офісні мови”, які можна знайти в розділі “Файл → Варіанти → Лангуж”. За допомогою цього діалогу користувач може вибрати, наприклад, основну мову, доказування мов, відображення мов і так далі. Aspose.Words забезпечує LanguagePreferences властивість як еквівалент цього діалогу. Якщо Aspose.Words вихід відрізняється від Microsoft Word вихід, встановити відповідне значення для EditingLanguage – це може покращити вихідний документ.

Приклад коду показує, як встановити японську мову як EditingLanguage:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// Specify LoadOptions to add Editing Language
LoadOptions loadOptions = new LoadOptions();
loadOptions.getLanguagePreferences().addEditingLanguage(EditingLanguage.JAPANESE);
Document doc = new Document(dataDir + "languagepreferences.docx", loadOptions);
int localeIdFarEast = doc.getStyles().getDefaultFont().getLocaleIdFarEast();
if (localeIdFarEast == (int) EditingLanguage.JAPANESE)
System.out.println("The document either has no any FarEast language set in defaults or it was set to Japanese originally.");
else
System.out.println("The document default FarEast language was set to another than Japanese language originally, so it is not overridden.");

Зареєструватися WarningCallback проблеми управління Під час завантаження документів

Деякі документи можуть бути пошкоджені, містять недійсні записи, або мають функції, які не підтримуються Aspose.Wordsй Якщо ви хочете дізнатися про проблеми, які виникли при завантаженні документа, Aspose.Words забезпечує IWarningCallback інтерфейс.

Приклад коду показує виконання IWarningCallback інтерфейс:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
private static class DocumentLoadingWarningCallback implements IWarningCallback {
public void warning(WarningInfo info) {
// Prints warnings and their details as they arise during document loading.
System.out.println("WARNING: " + info.getWarningType() + " source:" + info.getSource());
System.out.println("\tDescription: " + info.getDescription());
}
}

Щоб отримати інформацію про всі проблеми протягом усього часу завантаження, використовуйте WarningCallback майно.

Приклад коду показує, як використовувати цю властивість:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// Create a new LoadOptions object and set its WarningCallback property.
LoadOptions loadOptions = new LoadOptions();
loadOptions.setWarningCallback(new DocumentLoadingWarningCallback());
Document doc = new Document(dataDir + "input.docx", loadOptions);

Використання ресурсів Зворотній зв’язок для управління навантаженням зовнішніх ресурсів

Документ може містити зовнішні посилання на зображення, розміщені десь на локальному диску, мережі або інтернеті. Aspose.Words автоматично завантажує такі зображення в документ, але є ситуації, коли цей процес потрібно контролювати. Наприклад, щоб визначити, чи дійсно потрібно навантажити певне зображення або, можливо, пропустити його. Про нас ResourceLoadingCallback Варіант навантаження дозволяє контролювати це.

Приклад коду показує виконання IResourceLoadingCallback інтерфейс:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
private static class HtmlLinkedResourceLoadingCallback implements IResourceLoadingCallback {
public int resourceLoading(ResourceLoadingArgs args) throws Exception {
switch (args.getResourceType()) {
case ResourceType.CSS_STYLE_SHEET: {
System.out.println("External CSS Stylesheet found upon loading: " + args.getOriginalUri());
// CSS file will don't used in the document
return ResourceLoadingAction.SKIP;
}
case ResourceType.IMAGE: {
// Replaces all images with a substitute
String newImageFilename = "Logo.jpg";
System.out.println("\tImage will be substituted with: " + newImageFilename);
BufferedImage newImage = ImageIO
.read(new File(Utils.getDataDir(LoadOptionsCallbacks.class) + newImageFilename));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(newImage, "jpg", baos);
baos.flush();
byte[] imageBytes = baos.toByteArray();
baos.close();
args.setData(imageBytes);
// New images will be used instead of presented in the document
return ResourceLoadingAction.USER_PROVIDED;
}
case ResourceType.DOCUMENT: {
System.out.println("External document found upon loading: " + args.getOriginalUri());
// Will be used as usual
return ResourceLoadingAction.DEFAULT;
}
default:
throw new Exception("Unexpected ResourceType value.");
}
}
}

Приклад коду показує, як використовувати ResourceLoadingCallback майно:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// Create a new LoadOptions object and set its ResourceLoadingCallback attribute
// as an instance of our IResourceLoadingCallback implementation
LoadOptions loadOptions = new LoadOptions();
loadOptions.setResourceLoadingCallback(new HtmlLinkedResourceLoadingCallback());
// When we open an Html document, external resources such as references to CSS
// stylesheet files and external images
// will be handled in a custom manner by the loading callback as the document is
// loaded
Document doc = new Document(dataDir + "Images.html", loadOptions);
doc.save(dataDir + "Document.LoadOptionsCallback_out.pdf");

Використовуйте TempFolder, щоб уникнути помилок

Aspose.Words підтримує надзвичайно великі документи, які мають тисячі сторінок, пов’язаних з багатим змістом. Завантаження таких документів може знадобитися багато оперативної пам’яті. У процесі завантаження Aspose.Words потребує ще більше пам’яті для проведення тимчасових структур, які використовуються для оформлення документа.

Якщо у вас є проблема з виключенням пам’яті при завантаженні документа, спробуйте використовувати TempFolder майно. У цьому випадку Aspose.Words зберігати дані в тимчасових файлах замість пам’яті, і це може допомогти уникнути такого виключення.

Приклад наступного коду показує, як встановити TempFolder:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// Specify LoadOptions to set Temp Folder
LoadOptions lo = new LoadOptions();
lo.setTempFolder("C:\\TempFolder\\");
Document doc = new Document(dataDir + "document.doc", lo);

Встановити конвертацію

Найсучасніші формати документів зберігають їх вміст у Unicode і не вимагають особливої обробки. З іншого боку, є ще багато документів, які використовують деякі попередні кодування, а іноді або пропускають кодування інформації або навіть не підтримують кодування інформації за природою. Aspose.Words намагається автоматично виявити відповідне кодування за замовчуванням, але в рідкісному випадку можна використовувати кодування різних з одного виявленого алгоритмом розпізнавання кодування. У цьому випадку використовуйте Encoding майно, щоб отримати або встановити кодування.

Приклад коду показує, як встановити кодування для перенадання автоматично вибраного кодування:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// Set the Encoding attribute in a LoadOptions object to override the
// automatically chosen encoding with the one we know to be correct
LoadOptions loadOptions = new LoadOptions();
loadOptions.setEncoding(java.nio.charset.Charset.forName("UTF-8"));
Document doc = new Document(dataDir + "Encoded in UTF-8.txt", loadOptions);

Зашифровані документи

Ви можете завантажити Документи Word зашифровані паролем. Для цього скористайтеся спеціальним конструктором перевантаження, який приймає LoadOptions об’єкт. Цей об’єкт містить Password властивість, яка визначає рядок пароля.

Приклад наступного коду показує, як завантажити документ, зашифрований паролем:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// For complete examples and data files, please go to
// https://github.com/aspose-words/Aspose.Words-for-Java
// Load the encrypted document from the absolute path on disk.
Document doc = new Document(dataDir + "LoadEncrypted.docx", new LoadOptions("aspose"));

Якщо ви не знаєте заздалегідь, чи зашифровано файл, ви можете використовувати файл FileFormatUtil клас, який надає корисні методи для роботи з форматами файлів, такі як виявлення формату файлу або перетворення розширень файлів в / з конвертації формату файлів. Щоб визначити, чи зашифрований документ і вимагає пароля, щоб відкрити його, використовуйте пароль IsEncrypted майно.

Приклад коду показує, як перевірити OpenDocument або він зашифрований або не:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
FileFormatInfo info = FileFormatUtil.detectFileFormat(dataDir + "encrypted.odt");
System.out.println(info.isEncrypted());