Opties voor laden specificeren

Bij het laden van een document kunt u een aantal geavanceerde eigenschappen instellen. Aspose.Words geeft u de LoadOptions klasse, waardoor nauwkeurigere controle van het laadproces mogelijk is. Sommige laadformaten hebben een corresponderende klasse die laadopties voor dit laadformaat bevat, bijvoorbeeld, er is PdfLoadOptions voor het laden naar PDF-formaat of TxtLoadOptions voor het laden naar TXT. Dit artikel geeft voorbeelden van het werken met opties van de LoadOptions Klasse.

Instellen Microsoft Word Versie om het uiterlijk te wijzigen

Verschillende versies van de Microsoft Word applicatie kan documenten in verschillende tonen. Er is bijvoorbeeld een bekend probleem met OOXML-documenten zoals DOCX of DOTX geproduceerd met WPS Office. In dergelijke gevallen kunnen essentiële elementen van de opmaak van documenten ontbreken of verschillend worden geïnterpreteerd, Microsoft Word 2019 om een dergelijk document anders dan Microsoft Word 2010.

Standaard Aspose.Words opent documenten met Microsoft Word 2019 regels. Als u document laden moet laten verschijnen zoals het zou gebeuren in een van de vorige Microsoft Word toepassingsversies, moet u expliciet de gewenste versie met behulp van de MswVersion eigendom van de LoadOptions Klasse.

Het volgende code voorbeeld laat zien hoe u de Microsoft Word versie met laadopties:

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

Taalvoorkeuren instellen om het uiterlijk te wijzigen

De details van het weergeven van een document in Microsoft Word hangt niet alleen af van de toepassingsversie en de MswVersion eigenschappen, maar ook de taalinstellingen. Microsoft Word kan documenten anders tonen, afhankelijk van de “Office Language Preferences” instellingen, die kunnen worden gevonden in “File → Opties → Languаge.” Met behulp van dit dialoogvenster kan een gebruiker bijvoorbeeld primaire taal, proeftalen, weergavetalen, enzovoort selecteren. Aspose.Words levert de LanguagePreferences eigenschap als equivalent van dit dialoogvenster. Als Aspose.Words uitvoer verschilt van de Microsoft Word uitvoer, stel de juiste waarde voor EditingLanguage Dit kan het uitvoerdocument verbeteren.

Het volgende voorbeeld toont hoe Japans als 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.");

Gebruik WarningCallback Controleproblemen Tijdens laden van een document

Sommige documenten kunnen beschadigd zijn, ongeldige vermeldingen bevatten of functies hebben die momenteel niet ondersteund worden door Aspose.Words. Als u wilt weten over problemen die zich hebben voorgedaan tijdens het laden van een document, Aspose.Words levert de IWarningCallback interface.

De volgende code voorbeeld toont de implementatie van de IWarningCallback interface:

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

Om informatie te krijgen over alle problemen gedurende de laadtijd, gebruik de WarningCallback eigendom.

Het volgende voorbeeld van code laat zien hoe deze eigenschap te gebruiken:

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

ResourceLoading gebruiken Terugroepen naar de externe bronnen laden controleren

Een document kan externe links bevatten naar afbeeldingen ergens op een lokale schijf, netwerk of internet. Aspose.Words automatisch dergelijke afbeeldingen in een document laden, maar er zijn situaties waarin dit proces moet worden gecontroleerd. Bijvoorbeeld om te beslissen of we echt een bepaalde afbeelding moeten laden of misschien overslaan. De ResourceLoadingCallback Met de laadoptie kunt u dit regelen.

De volgende code voorbeeld toont de implementatie van de IResourceLoadingCallback interface:

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

De volgende code voorbeeld laat zien hoe de ResourceLoadingCallback eigenschap:

// 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 gebruiken om een geheugenuitzondering te vermijden

Aspose.Words ondersteunt zeer grote documenten die duizenden pagina’s vol met rijke inhoud. Het laden van dergelijke documenten kan veel RAM vereisen. Bij het laden, Aspose.Words heeft nog meer geheugen nodig om tijdelijke structuren vast te houden die gebruikt worden om een document te verwerken.

Als u een probleem heeft met de Out of Memory uitzondering tijdens het laden van een document, probeer dan de TempFolder eigendom. In dit geval, Aspose.Words zal sommige gegevens opslaan in tijdelijke bestanden in plaats van geheugen, en dit kan helpen voorkomen dat een dergelijke uitzondering.

Het volgende voorbeeld van de code laat zien hoe u moet instellen 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);

De codering expliciet instellen

De meeste moderne documentformaten slaan hun inhoud op in Unicode en vereisen geen speciale behandeling. Aan de andere kant zijn er nog steeds veel documenten die een aantal pre-Unicode codering gebruiken en soms missen codering informatie of niet eens ondersteunen codering informatie door de natuur. Aspose.Words probeert automatisch automatisch de juiste codering op te sporen, maar in een zeldzaam geval moet u mogelijk een andere codering gebruiken dan die welke door ons coderingsherkenningsalgoritme wordt gedetecteerd. In dit geval, gebruik de Encoding eigenschap om de codering te verkrijgen of in te stellen.

Het volgende voorbeeld van code laat zien hoe u de codering kunt instellen om de automatisch gekozen codering te omzeilen:

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

Versleutelde documenten laden

U kunt laden Word documenten versleuteld met een wachtwoord. Om dit te doen, gebruik een speciale constructor overbelasting, die een LoadOptions object. Dit object bevat de Password eigenschap, die de wachtwoordstring specificeert.

Het volgende voorbeeld van code laat zien hoe u een document versleuteld met een wachtwoord kunt laden:

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

Als u niet van tevoren weet of het bestand wordt gecodeerd, kunt u de FileFormatUtil klasse, die utility methoden biedt voor het werken met bestandsformaten, zoals het detecteren van het bestandsformaat of het omzetten van bestandsextensies naar/van bestandsformaat opsommingen. Om te detecteren of het document is gecodeerd en vereist een wachtwoord om het te openen, gebruik de IsEncrypted eigendom.

Het volgende voorbeeld van code laat zien hoe OpenDocument te verifiëren of het is versleuteld of niet:

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