Yükleme Seçeneklerini Belirtin

Bir belgeyi yüklerken bazı gelişmiş özellikleri ayarlayabilirsiniz. Aspose.Words size yükleme sürecinin daha hassas kontrolüne olanak tanıyan LoadOptions sınıfını sağlar. Bazı yükleme formatlarında, bu yükleme formatına yönelik yükleme seçeneklerini içeren karşılık gelen bir sınıf bulunur; örneğin, PDF formatına yüklemek için PdfLoadOptions veya TXT’ye yüklemek için TxtLoadOptions vardır. Bu makalede LoadOptions sınıfının seçenekleriyle çalışmaya ilişkin örnekler verilmektedir.

Görünümü Değiştirmek için Microsoft Word Sürümünü Ayarlayın

Microsoft Word uygulamasının farklı sürümleri belgeleri farklı şekilde görüntüleyebilir. Örneğin WPS Office kullanılarak üretilen DOCX veya DOTX gibi OOXML belgelerinde iyi bilinen bir sorun vardır. Böyle bir durumda, temel belge işaretleme öğeleri eksik olabilir veya farklı şekilde yorumlanabilir ve bu da Microsoft Word 2019’un böyle bir belgeyi Microsoft Word 2010’a göre farklı göstermesine neden olabilir.

Aspose.Words, varsayılan olarak belgeleri Microsoft Word 2019 kurallarını kullanarak açar. Belge yükleme işleminin önceki Microsoft Word uygulama sürümlerinden birinde olduğu gibi görünmesini sağlamanız gerekiyorsa, LoadOptions sınıfının MswVersion özelliğini kullanarak istenen sürümü açıkça belirtmelisiniz.

Aşağıdaki kod örneği, Microsoft Word sürümünün yükleme seçenekleriyle nasıl ayarlanacağını gösterir:

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

Görünümü Değiştirmek için Dil Tercihlerini Ayarlayın

Bir belgeyi Microsoft Word’te görüntülemenin ayrıntıları yalnızca uygulama sürümüne ve MswVersion özellik değerine değil aynı zamanda dil ayarlarına da bağlıdır. Microsoft Word, “Dosya → Seçenekler → Dil” bölümünde bulunabilen “Ofis Dil Tercihleri” iletişim kutusu ayarlarına bağlı olarak belgeleri farklı şekilde gösterebilir. Bu iletişim kutusunu kullanarak kullanıcı örneğin birincil dili, yazım denetleme dillerini, görüntüleme dillerini vb. seçebilir. Aspose.Words, LanguagePreferences özelliğini bu iletişim kutusunun eşdeğeri olarak sağlar. Aspose.Words çıktısı Microsoft Word çıktısından farklıysa EditingLanguage için uygun değeri ayarlayın; bu, çıktı belgesini iyileştirebilir.

Aşağıdaki kod örneği, Japonca’nın EditingLanguage olarak nasıl ayarlanacağını gösterir:

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

Belge Yüklerken Sorunları Kontrol Etmek İçin WarningCallback’i Kullanın

Bazı belgeler bozuk olabilir, geçersiz girişler içerebilir veya şu anda Aspose.Words tarafından desteklenmeyen özelliklere sahip olabilir. Bir belgeyi yüklerken oluşan sorunları öğrenmek istiyorsanız Aspose.Words, IWarningCallback arayüzünü sağlar.

Aşağıdaki kod örneği IWarningCallback arayüzünün uygulanmasını gösterir:

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

Yükleme süresi boyunca tüm sorunlar hakkında bilgi almak için WarningCallback özelliğini kullanın.

Aşağıdaki kod örneği bu özelliğin nasıl kullanılacağını gösterir:

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

Dış Kaynak Yüklemesini Kontrol Etmek için ResourceLoadingCallback’i kullanın

Bir belge, yerel diskte, ağda veya İnternet’te bir yerde bulunan görüntülere harici bağlantılar içerebilir. Aspose.Words bu tür görselleri otomatik olarak bir belgeye yükler ancak bu sürecin kontrol edilmesi gereken durumlar da vardır. Örneğin, belirli bir görseli gerçekten yüklememiz mi, yoksa onu atlamamız mı gerektiğine karar vermek için. ResourceLoadingCallback yükleme seçeneği bunu kontrol etmenizi sağlar.

Aşağıdaki kod örneği IResourceLoadingCallback arayüzünün uygulanmasını gösterir:

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

Aşağıdaki kod örneği ResourceLoadingCallback özelliğinin nasıl kullanılacağını gösterir:

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

Bellek İstisnasını Önlemek için TempFolder’ı Kullanın

Aspose.Words, zengin içerikle dolu binlerce sayfaya sahip son derece büyük belgeleri destekler. Bu tür belgelerin yüklenmesi çok fazla RAM gerektirebilir. Yükleme sürecinde, Aspose.Words’in bir belgeyi ayrıştırmak için kullanılan geçici yapıları tutmak için daha da fazla belleğe ihtiyacı vardır.

Belge yüklerken Bellek Yetersizliği istisnasıyla ilgili bir sorunla karşılaşırsanız TempFolder özelliğini kullanmayı deneyin. Bu durumda Aspose.Words, bazı verileri bellek yerine geçici dosyalarda saklar ve bu, böyle bir istisnanın önlenmesine yardımcı olabilir.

Aşağıdaki kod örneği TempFolder‘in nasıl ayarlanacağını gösterir:

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

Kodlamayı Açıkça Ayarlayın

Çoğu modern belge formatı, içeriklerini Unicode’da saklar ve özel bir işlem gerektirmez. Öte yandan, Unicode öncesi bazı kodlamaları kullanan ve bazen kodlama bilgilerini kaçıran veya doğası gereği kodlama bilgilerini bile desteklemeyen birçok belge hala vardır. Aspose.Words, varsayılan olarak uygun kodlamayı otomatik olarak algılamaya çalışır, ancak nadir bir durumda, kodlama tanıma algoritmamız tarafından algılanandan farklı bir kodlama kullanmanız gerekebilir. Bu durumda kodlamayı almak veya ayarlamak için Encoding özelliğini kullanın.

Aşağıdaki kod örneği, kodlamanın otomatik olarak seçilen kodlamayı geçersiz kılacak şekilde nasıl ayarlanacağını gösterir:

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

Şifreli Belgeleri Yükle

Bir parola ile şifrelenmiş Word belgelerini yükleyebilirsiniz. Bunu yapmak için LoadOptions nesnesini kabul eden özel bir yapıcı aşırı yüklemesi kullanın. Bu nesne, parola dizesini belirten Password özelliğini içerir.

Aşağıdaki kod örneği, parolayla şifrelenmiş bir belgenin nasıl yükleneceğini gösterir:

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

Dosyanın şifrelenip şifrelenmediğini önceden bilmiyorsanız, dosya formatlarıyla çalışmak için dosya formatını algılama veya dosya uzantılarını dosya formatı numaralandırmalarına/dosya uzantılarından dönüştürme gibi yardımcı yöntemler sağlayan FileFormatUtil sınıfını kullanabilirsiniz. Belgenin şifrelenip şifrelenmediğini ve onu açmak için parola gerekip gerekmediğini tespit etmek için IsEncrypted özelliğini kullanın.

Aşağıdaki kod örneği, OpenDocument’in şifrelenmiş olup olmadığının nasıl doğrulanacağını gösterir:

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