Upřesnit možnosti zatížení

Při načítání dokumentu můžete nastavit některé pokročilé vlastnosti. Aspose.Words poskytuje vám LoadOptions třída, která umožňuje přesnější řízení procesu zatížení. Některé formáty zatížení mají odpovídající třídu, která drží možnosti zatížení pro tento formát zatížení, například, tam je PdfLoadOptions pro načtení do formátu PDF nebo TxtLoadOptions pro načtení do TXT. Tento článek uvádí příklady práce s možnostmi LoadOptions třída.

Nastavit Microsoft Word Verze ke změně vzhledu

Různé verze Microsoft Word aplikace může zobrazovat dokumenty jinak. Například existuje známý problém s OOXML dokumenty, jako je DOCX nebo DOTX vyrobené pomocí WPS Office. V takových případech mohou chybět základní prvky značení dokumentů nebo je lze vykládat jinak, což způsobuje Microsoft Word 2019 ukázat takový dokument jinak než Microsoft Word 2010.

Výchozí Aspose.Words otevírá dokumenty pomocí Microsoft Word 2019 pravidla. Pokud potřebujete, aby se načítání dokumentů zdálo jako v jednom z předchozích Microsoft Word Aplikace verze, měli byste výslovně zadat požadovanou verzi pomocí MswVersion majetek LoadOptions třída.

Následující příklad kódu ukazuje, jak nastavit Microsoft Word verze s možností zatížení:

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

Nastavit předvolby jazyka ke změně vzhledu

Údaje o zobrazení dokumentu v Microsoft Word závisí nejen na verzi aplikace a MswVersion hodnota vlastnosti, ale také na nastavení jazyka. Microsoft Word může zobrazit dokumenty jinak v závislosti na dialogovém okně “Office Language Preferences,” které lze nalézt v “File → Options → Languаge.” Pomocí tohoto dialogu si uživatel může vybrat například primární jazyk, dokládající jazyky, zobrazovat jazyky a tak dále. Aspose.Words poskytuje LanguagePreferences vlastnost jako ekvivalent tohoto dialogu. Pokud Aspose.Words výstup se liší od Microsoft Word výstup, nastavit vhodnou hodnotu pro EditingLanguage To může zlepšit výstupní dokument.

Následující příklad kódu ukazuje, jak nastavit japonsky jako 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.");

Použití WarningCallback na kontrolu problémů Při načítání dokumentu

Některé dokumenty mohou být poškozeny, obsahují neplatné položky nebo mají funkce, které nejsou v současné době podporovány Aspose.Words. Pokud chcete vědět o problémech, které nastaly při načtení dokumentu, Aspose.Words poskytuje IWarningCallback rozhraní.

Následující příklad kódu ukazuje provádění IWarningCallback rozhraní:

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

Chcete- li získat informace o všech problémech po celou dobu zátěže, použijte WarningCallback majetek.

Následující příklad kódu ukazuje, jak používat tuto vlastnost:

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

Použít vyhledávání zdrojů Zpětná vazba k ovládání zatížení externích zdrojů

Dokument může obsahovat externí odkazy na obrázky umístěné někde na místním disku, síti nebo internetu. Aspose.Words automaticky tyto obrázky naloží do dokumentu, ale existují situace, kdy je třeba tento proces kontrolovat. Například rozhodnout, zda opravdu potřebujeme načíst určitý obraz nebo jej možná přeskočit. The ResourceLoadingCallback možnost načíst umožňuje ovládat.

Následující příklad kódu ukazuje provádění IResourceLoadingCallback rozhraní:

// 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.");
}
}
}

Následující příklad kódu ukazuje, jak používat ResourceLoadingCallback vlastnost:

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

Pomocí TempFolder vyhnout paměti výjimky

Aspose.Words podporuje nesmírně velké dokumenty, které mají tisíce stránek plných bohatého obsahu. Načítání těchto dokumentů může vyžadovat mnoho RAM. V průběhu nakládky, Aspose.Words potřebuje ještě více paměti k udržení dočasných struktur používaných k analýze dokumentu.

Pokud máte problém s výjimkou mimo paměť při načítání dokumentu, zkuste použít TempFolder majetek. V tomto případě Aspose.Words uloží některé údaje do dočasných souborů namísto paměti, a to může pomoci vyhnout se této výjimky.

Následující příklad kódu ukazuje, jak nastavit 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);

Nastavte kódování explicitně

Většina moderních formátů dokumentů ukládá svůj obsah v Unicode a nevyžaduje zvláštní zacházení. Na druhé straně je stále mnoho dokumentů, které používají nějaké kódování před Unicode a někdy buď vynecháte kódování informací, nebo dokonce nepodporujete kódování informací podle povahy. Aspose.Words se snaží automaticky detekovat odpovídající kódování ve výchozím nastavení, ale ve vzácném případě budete muset použít kódování odlišné od toho, které detekuje náš kódovací algoritmus. V tomto případě použijte Encoding vlastnost získat nebo nastavit kódování.

Následující příklad kódu ukazuje, jak nastavit kódování k potlačení automaticky zvoleného kódování:

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

Načíst zašifrované dokumenty

Můžete načíst Slovní dokumenty zašifrované heslem. K tomu použijte speciální konstruktor přetížení, který přijímá LoadOptions objekt. Tento objekt obsahuje Password vlastnost, která určuje řetězec hesla.

Následující příklad kódu ukazuje, jak načíst dokument zašifrovaný heslem:

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

Pokud nevíte předem, zda je soubor zašifrovaný, můžete použít FileFormatUtil třída, která poskytuje užitné metody pro práci s formáty souborů, jako je zjištění formátu souboru nebo převod přípony souboru do/z čísel formátu souboru. Chcete-li zjistit, zda je dokument zašifrován a vyžaduje heslo k jeho otevření, použijte IsEncrypted majetek.

Následující příklad kódu ukazuje, jak ověřit OpenDocument buď je zašifrovaný, nebo ne:

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