تحديد خيارات التحميل

عند تحميل مستند، يمكنك تعيين بعض الخصائص المتقدمة. يوفر لك Aspose.Words فئة LoadOptions، والتي تسمح بتحكم أكثر دقة في عملية التحميل. تحتوي بعض تنسيقات التحميل على فئة مقابلة تحتوي على خيارات التحميل لتنسيق التحميل هذا، على سبيل المثال، يوجد PdfLoadOptions للتحميل إلى تنسيق PDF أو TxtLoadOptions للتحميل إلى TXT. توفر هذه المقالة أمثلة على العمل مع خيارات فئة LoadOptions.

قم بتعيين إصدار Microsoft Word لتغيير المظهر

يمكن للإصدارات المختلفة من تطبيق Microsoft Word عرض المستندات بشكل مختلف. على سبيل المثال، هناك مشكلة معروفة في مستندات OOXML مثل DOCX أو 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 المستندات بشكل مختلف اعتمادًا على إعدادات الحوار “تفضيلات لغة المكتب”، والتي يمكن العثور عليها في “ملف → خيارات → اللغة”. باستخدام مربع الحوار هذا، يمكن للمستخدم تحديد، على سبيل المثال، اللغة الأساسية ولغات التدقيق ولغات العرض وما إلى ذلك. يوفر 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);

استخدم ResourceLoadingCallback للتحكم في تحميل الموارد الخارجية

قد يحتوي المستند على روابط خارجية لصور موجودة في مكان ما على القرص المحلي أو الشبكة أو الإنترنت. يقوم 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");

استخدم TempFolder لتجنب استثناء الذاكرة

يدعم Aspose.Words المستندات الكبيرة جدًا التي تحتوي على آلاف الصفحات المليئة بالمحتوى الغني. قد يتطلب تحميل مثل هذه المستندات قدرًا كبيرًا من ذاكرة الوصول العشوائي. في عملية التحميل، يحتاج Aspose.Words إلى المزيد من الذاكرة للاحتفاظ بالهياكل المؤقتة المستخدمة لتحليل المستند.

إذا كانت لديك مشكلة في استثناء نفاد الذاكرة أثناء تحميل مستند، فحاول استخدام خاصية 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);

تحميل المستندات المشفرة

يمكنك تحميل مستندات Word مشفرة بكلمة مرور. للقيام بذلك، استخدم التحميل الزائد للمنشئ الخاص الذي يقبل كائن 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.

يوضح مثال التعليمات البرمجية التالي كيفية التحقق من OpenDocument سواء كان مشفرًا أم لا:

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