Specificeer laadopties

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 de 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 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 dat geval kunnen essentiële elementen van de opmaak van documenten ontbreken of verschillend worden geïnterpreteerd, hetgeen Microsoft Word 2019 om een dergelijk document anders dan Microsoft Word 2010.

Standaard Aspose.Words opent documenten met behulp van 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 voorbeeld toont 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-.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 loadOptions = new LoadOptions { MswVersion = MsWordVersion.Word2010 };
Document doc = new Document(MyDir + "Document.docx", loadOptions);
doc.Save(ArtifactsDir + "WorkingWithLoadOptions.SetMsWordVersion.docx");

Taalvoorkeuren instellen om het uiterlijk te wijzigen

De details van het tonen 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 dialoog “Office Language Preferences,” die kan 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 uitgang verschilt van de Microsoft Word uitvoer, stel de juiste waarde voor EditingLanguage Dit kan het uitvoerdocument verbeteren.

Het volgende code voorbeeld laat zien hoe Japans als EditingLanguage:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
LoadOptions loadOptions = new LoadOptions();
// Set language preferences that will be used when document is loading.
loadOptions.LanguagePreferences.AddEditingLanguage(EditingLanguage.Japanese);
Document doc = new Document(MyDir + "No default editing language.docx", loadOptions);
int localeIdFarEast = doc.Styles.DefaultFont.LocaleIdFarEast;
Console.WriteLine(
localeIdFarEast == (int)EditingLanguage.Japanese
? "The document either has no any FarEast language set in defaults or it was set to Japanese originally."
: "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.

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

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
public class DocumentLoadingWarningCallback : IWarningCallback
{
public void Warning(WarningInfo info)
{
// Prints warnings and their details as they arise during document loading.
Console.WriteLine($"WARNING: {info.WarningType}, source: {info.Source}");
Console.WriteLine($"\tDescription: {info.Description}");
}
}

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-.NET
LoadOptions loadOptions = new LoadOptions { WarningCallback = new DocumentLoadingWarningCallback() };
Document doc = new Document(MyDir + "Document.docx", loadOptions);

ResourceLoading gebruiken Terugroepen om 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.

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

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
private class HtmlLinkedResourceLoadingCallback : IResourceLoadingCallback
{
public ResourceLoadingAction ResourceLoading(ResourceLoadingArgs args)
{
switch (args.ResourceType)
{
case ResourceType.CssStyleSheet:
{
Console.WriteLine($"External CSS Stylesheet found upon loading: {args.OriginalUri}");
// CSS file will don't used in the document.
return ResourceLoadingAction.Skip;
}
case ResourceType.Image:
{
// Replaces all images with a substitute.
Image newImage = Image.FromFile(ImagesDir + "Logo.jpg");
ImageConverter converter = new ImageConverter();
byte[] imageBytes = (byte[])converter.ConvertTo(newImage, typeof(byte[]));
args.SetData(imageBytes);
// New images will be used instead of presented in the document.
return ResourceLoadingAction.UserProvided;
}
case ResourceType.Document:
{
Console.WriteLine($"External document found upon loading: {args.OriginalUri}");
// Will be used as usual.
return ResourceLoadingAction.Default;
}
default:
throw new InvalidOperationException("Unexpected ResourceType value.");
}
}
}

Het volgende voorbeeld van code laat zien hoe de ResourceLoadingCallback eigenschap:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
LoadOptions loadOptions = new LoadOptions { ResourceLoadingCallback = new HtmlLinkedResourceLoadingCallback() };
// When we open an Html document, external resources such as references to CSS stylesheet files
// and external images will be handled customarily by the loading callback as the document is loaded.
Document doc = new Document(MyDir + "Images.html", loadOptions);
doc.Save(ArtifactsDir + "WorkingWithLoadOptions.ResourceLoadingCallback.pdf");

TempFolder gebruiken om een geheugenuitzondering te vermijden

Aspose.Words ondersteunt extreem 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 tijdens het laden van een document een probleem heeft met de uitzondering van Out of Memory, 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 code voorbeeld laat zien hoe te instellen TempFolder:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
LoadOptions loadOptions = new LoadOptions { TempFolder = ArtifactsDir };
Document doc = new Document(MyDir + "Document.docx", loadOptions);

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 te detecteren, 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-.NET
LoadOptions loadOptions = new LoadOptions { Encoding = Encoding.UTF7 };
Document doc = new Document(MyDir + "Encoded in UTF-7.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 wachtwoord string 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-.NET
Document doc = new Document(MyDir + "Encrypted.docx", new LoadOptions("docPassword"));

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-.NET
FileFormatInfo info = FileFormatUtil.DetectFileFormat(MyDir + "Encrypted.odt");
Console.WriteLine(info.IsEncrypted);