Задаване на настройките за зареждане
При зареждане на документ, можете да зададете някои напреднали свойства. 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-.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"); |
Задаване на езикови предпочитания за промяна на външния вид
Подробности за показване на документ в 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-.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."); |
Използване WarningCallback Контрол върху проблемите При зареждане на документ
Някои документи могат да бъдат повредени, да съдържат невалидни записи или да имат функции, които понастоящем не са подкрепени от Aspose.Words. Ако искате да знаете за проблеми, възникнали при зареждане на документ, Aspose.Words осигурява IWarningCallback интерфейс.
Следният пример с код показва прилагането на IWarningCallback интерфейс:
// 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}"); | |
} | |
} |
За да получите информация за всички проблеми през цялото време на натоварване, използвайте WarningCallback собственост.
Следният пример за код показва как да използвате това свойство:
// 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); |
Използване на Ресурси Обаждане за контрол на външните ресурси Зареждане
Документът може да съдържа външни връзки към изображения, разположени някъде на местен диск, мрежа или интернет. Aspose.Words автоматично зарежда такива изображения в документ, но има ситуации, когато този процес трябва да бъде контролиран. Например, да решим дали наистина трябва да заредим определено изображение или да го пропуснем. На ResourceLoadingCallback опцията за зареждане ви позволява да контролирате това.
Следният пример с код показва прилагането на IResourceLoadingCallback интерфейс:
// 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."); | |
} | |
} | |
} |
Следният пример с код показва как да използвате ResourceLoadingCallback собственост:
// 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"); |
Използвайте 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-.NET | |
LoadOptions loadOptions = new LoadOptions { TempFolder = ArtifactsDir }; | |
Document doc = new Document(MyDir + "Document.docx", loadOptions); |
Задаване на кодовото описание
Повечето съвременни формати на документи съхраняват съдържанието си в Unicode и не изискват специална обработка. От друга страна, все още има много документи, които използват някои предварително Unicode кодиране и понякога пропуснете кодиране информация или дори не поддържа кодиране информация по природа. Aspose.Words се опитва автоматично да открие подходящо кодиране по подразбиране, но в редки случаи може да се наложи да използвате кодиране различно от това, открито от нашия алгоритъм за разпознаване. В този случай използвайте Encoding имот, за да получите или настроите кодирането.
Следният пример за код показва как да се зададе кодирането, за да се преодолее автоматично избраното кодиране:
// 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); |
Зареждане на кодирани документи
Можеш да заредиш. Документи с думи кодирани с парола. За да направите това, използвайте специален конструктор претоварване, което приема LoadOptions Възразявам. Този обект съдържа Password имот, който определя низ с парола.
Следният пример с код показва как да заредите криптиран документ с парола:
// 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")); |
Ако не знаете предварително дали файлът е криптиран, можете да използвате FileFormatUtil клас, който осигурява полезни методи за работа с файлови формати, като например откриване на файлов формат или конвертиране на файлови разширения към/от файлов формат изброявания. За да откриете дали документът е криптиран и изисква парола за отваряне, използвайте IsEncrypted собственост.
Следният пример за код показва как да се провери Open Document или е криптиран или не:
// 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); |