Посочете настройките за зареждане

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

Комплект Microsoft Word Версия за промяна на външния вид

Различни версии на Microsoft Word приложението може да показва документи по различен начин. Например, има известен проблем с документи OOXML като DOX или DOTX произведени чрез 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 може да показва документи различно в зависимост от настройките на диалоговия прозорец “Office Language,” който може да се намери в “File → Options → Language.” Използвайки този диалогов прозорец, потребителят може да избере например първичен език, да доказва езици, да показва езици и т.н. 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");

Използвайте Temp папка, за да избегнете изключение на паметта

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

Ако имате проблем с изключение на Out of Memory при зареждане на документ, опитайте се да използвате 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 и не изискват специална обработка. От друга страна, все още има много документи, които използват някои предварително 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);

Зареждане на кодирани документи

Можеш да заредиш. Документи с думи кодирани с парола. За да направите това, използвайте специален конструктор претоварване, което приема 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 собственост.

Следният пример за код показва как да се провери Open Document или е криптиран или не:

// 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());