Yükleme Seçeneklerini Belirtin
Belge yüklerken bazı gelişmiş özellikler ayarlayabilirsiniz. Aspose.Words size yükleme işleminin daha hassas kontrolünü sağlayan LoadOptions sınıfını sağlar. Bazı yükleme biçimleri, bu yükleme biçimi için yükleme seçeneklerini tutan karşılık gelen bir sınıfa sahiptir, örneğin, PDF biçimine yüklemek için PdfLoadOptions veya TXT biçimine yüklemek için TxtLoadOptions vardır. Bu makalede, LoadOptions sınıfının seçenekleriyle çalışma örnekleri 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 kayıtsızca görüntüleyebilir. Örneğin, OOXML Office kullanılarak üretilen DOCX veya DOTX gibi WPS belgelerde iyi bilinen bir sorun vardır. Bu durumda, temel belge biçimlendirme öğeleri eksik olabilir veya farklı şekilde yorumlanabilir ve Microsoft Word 2019’un böyle bir belgeyi Microsoft Word 2010’a kıyasla farklı göstermesine neden olabilir.
Varsayılan olarak Aspose.Words, Microsoft Word 2019 kurallarını kullanarak belgeleri açar. Belge yüklemesinin ö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 istediğiniz 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-C | |
System::SharedPtr<LoadOptions> loadOptions = System::MakeObject<LoadOptions>(); | |
// Change the loading version to Microsoft Word 2010. | |
loadOptions->set_MswVersion(MsWordVersion::Word2010); | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"Document.docx", loadOptions); | |
System::String outputPath = outputDataDir + u"Load_Options.SetMSWordVersion.docx"; | |
doc->Save(outputPath); |
Görünümü Değiştirmek için Dil Tercihlerini Ayarlama
Bir belgeyi Microsoft Word içinde 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 bulunan “Office Dil Tercihleri” iletişim kutusu ayarlarına bağlı olarak belgeleri farklı gösterebilir. Bu iletişim kutusunu kullanarak bir kullanıcı örneğin birincil dil, yazım denetleme dilleri, görüntüleme dilleri vb. Seçebilir. Aspose.Words bu iletişim kutusunun eşdeğeri olarak LanguagePreferences özelliğini 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-C | |
// Create a new LoadOptions object. | |
System::SharedPtr<LoadOptions> loadOptions = System::MakeObject<LoadOptions>(); | |
// Set language preferences that will be used when document is loading. | |
loadOptions->get_LanguagePreferences()->AddEditingLanguage(EditingLanguage::Japanese); | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"languagepreferences.docx", loadOptions); |
Belge Yüklenirken Karşılaşılan Sorunları Denetlemek için WarningCallback kullanın
Bazı belgeler bozuk olabilir, geçersiz girişler içerebilir veya şu anda Aspose.Words tarafından desteklenmeyen özelliklere sahip olabilir. Belge yüklenirken ortaya çıkan sorunlar hakkında bilgi edinmek istiyorsanız, Aspose.Words IWarningCallback arabirimini sağlar.
Aşağıdaki kod örneği, IWarningCallback arabiriminin uygulanmasını gösterir:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
class DocumentLoadingWarningCallback : public IWarningCallback | |
{ | |
public: | |
System::SharedPtr<WarningInfoCollection> mWarnings; | |
void Warning(System::SharedPtr<WarningInfo> info) override; | |
DocumentLoadingWarningCallback(); | |
}; | |
void DocumentLoadingWarningCallback::Warning(System::SharedPtr<WarningInfo> info) | |
{ | |
// Prints warnings and their details as they arise during document loading. | |
std::cout << "WARNING: {info->get_WarningType} " << std::endl; | |
std::cout << "Source: {info->get_Source} " << std::endl; | |
std::cout << "\tDescription: {info->get_Description} " << std::endl; | |
} | |
DocumentLoadingWarningCallback::DocumentLoadingWarningCallback() : mWarnings(System::MakeObject<WarningInfoCollection>()) | |
{ | |
} |
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-C | |
// Create a new LoadOptions object and set its WarningCallback property. | |
System::SharedPtr<LoadOptions> loadOptions = System::MakeObject<LoadOptions>(); | |
System::SharedPtr<DocumentLoadingWarningCallback> callback = System::MakeObject<DocumentLoadingWarningCallback>(); | |
loadOptions->set_WarningCallback(callback); | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"Document.docx", loadOptions); |
Harici Kaynakların Yüklenmesini Kontrol Etmek için ResourceLoadingCallback kullanın
Bir belge, yerel bir diskte, ağda veya Internet’te bir yerde bulunan görüntülere harici bağlantılar içerebilir. Aspose.Words bu tür görüntüleri otomatik olarak bir belgeye yükler, ancak bu işlemin kontrol edilmesi gereken durumlar vardır. Örneğin, belirli bir görüntüyü gerçekten yüklememiz veya belki de atlamamız gerekip gerekmediğine karar vermek için. ResourceLoadingCallback load seçeneği bunu kontrol etmenizi sağlar.
Aşağıdaki kod örneği, IResourceLoadingCallback arabiriminin uygulanmasını gösterir:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
class HtmlLinkedResourceLoadingCallback : public IResourceLoadingCallback | |
{ | |
public: | |
ResourceLoadingAction ResourceLoading(System::SharedPtr<ResourceLoadingArgs> args) override; | |
HtmlLinkedResourceLoadingCallback(); | |
}; | |
HtmlLinkedResourceLoadingCallback::HtmlLinkedResourceLoadingCallback() | |
{ | |
} | |
ResourceLoadingAction HtmlLinkedResourceLoadingCallback::ResourceLoading(System::SharedPtr<ResourceLoadingArgs> args) | |
{ | |
switch (args->get_ResourceType()) | |
{ | |
case ResourceType::CssStyleSheet: | |
{ | |
std::cout << "External CSS Stylesheet found upon loading: " << args->get_OriginalUri().ToUtf8String() << std::endl; | |
// CSS file will don't used in the document | |
return ResourceLoadingAction::Skip; | |
} | |
case ResourceType::Image: | |
{ | |
// Replaces all images with a substitute | |
System::String newImageFilename = u"Logo.jpg"; | |
std::cout << "\tImage will be substituted with: " << newImageFilename.ToUtf8String() << std::endl; | |
System::SharedPtr<System::Drawing::Image> newImage = System::Drawing::Image::FromFile(GetInputDataDir_LoadingAndSaving() + newImageFilename); | |
System::SharedPtr<System::Drawing::ImageConverter> converter = System::MakeObject<System::Drawing::ImageConverter>(); | |
auto imageBytes = System::DynamicCast<System::Array<uint8_t>>(converter->ConvertTo(nullptr, nullptr, newImage, System::ObjectExt::GetType<System::Array<uint8_t>>())); | |
//System::ArrayPtr<uint8_t> imageBytes = System::IO::File::ReadAllBytes(GetInputDataDir_LoadingAndSaving() + newImageFilename); | |
args->SetData(imageBytes); | |
// New images will be used instead of presented in the document | |
return ResourceLoadingAction::UserProvided; | |
} | |
case ResourceType::Document: | |
{ | |
std::cout << "External document found upon loading: " << args->get_OriginalUri().ToUtf8String() << std::endl; | |
// Will be used as usual | |
return ResourceLoadingAction::Default; | |
} | |
default: | |
throw System::InvalidOperationException(u"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-C | |
// Create a new LoadOptions object and set its ResourceLoadingCallback attribute as an instance of our IResourceLoadingCallback implementation | |
System::SharedPtr<LoadOptions> loadOptions = System::MakeObject<LoadOptions>(); | |
loadOptions->set_ResourceLoadingCallback(System::MakeObject<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 | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"Images.html", loadOptions); | |
doc->Save(outputDataDir + u"Load_Options.LoadOptionsResourceLoadingCallback.pdf"); |
Bir Bellek İstisnasından Kaçınmak için TempFolder kullanın
Aspose.Words zengin içerikle dolu binlerce sayfası olan son derece büyük belgeleri destekler. Bu tür belgelerin yüklenmesi çok fazla RAM gerektirebilir. Yükleme sürecinde Aspose.Words, bir belgeyi ayrıştırmak için kullanılan geçici yapıları tutmak için daha da fazla belleğe ihtiyaç duyar.
Belge yüklenirken Yetersiz Bellek özel durumuyla ilgili bir sorun yaşarsanız, TempFolder özelliğini kullanmayı deneyin. Bu durumda, Aspose.Words bazı verileri bellek yerine geçici dosyalarda depolar ve bu, böyle bir istisnadan kaçınmaya yardımcı olabilir.
Aşağıdaki kod örneği nasıl ayarlanacağını gösterir TempFolder:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::SharedPtr<LoadOptions> loadOptions = System::MakeObject<LoadOptions>(); | |
loadOptions->set_TempFolder(u"C:/TempFolder/"); | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"Document.docx", loadOptions); |
Kodlamayı Açıkça Ayarlayın
Çoğu modern belge biçimi içeriklerini Unicode’da depolar ve özel işlem gerektirmez. Öte yandan, bazı Unicode öncesi kodlamaları kullanan ve bazen kodlama bilgilerini kaçıran veya doğası gereği kodlama bilgilerini bile desteklemeyen birçok belge vardır. Aspose.Words varsayılan olarak uygun kodlamayı otomatik olarak algılamaya çalışır, ancak nadir durumlarda 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-C | |
// Set the Encoding attribute in a LoadOptions object to override the automatically chosen encoding with the one we know to be correct | |
System::SharedPtr<LoadOptions> loadOptions = System::MakeObject<LoadOptions>(); | |
loadOptions->set_Encoding(System::Text::Encoding::get_UTF7()); | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"Encoded in UTF-7.txt", loadOptions); |
Şifrelenmiş Belgeleri Yükle
Parola ile şifrelenmiş Word belgelerini yükleyebilirsiniz. Bunu yapmak için, LoadOptions nesnesini kabul eden özel bir kurucu aşırı yüklemesi kullanın. Bu nesne, parola dizesini belirten Password özelliğini içerir.
Aşağıdaki kod örneği, parola ile ş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-C | |
// The path to the documents directory. | |
System::String dataDir = GetInputDataDir_LoadingAndSaving(); | |
// Loads encrypted document. | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(dataDir + u"LoadEncrypted.docx", System::MakeObject<LoadOptions>(u"aspose")); | |
Dosyanın şifrelenip şifrelenmediğini önceden bilmiyorsanız, dosya biçimini algılama veya dosya uzantılarını dosya biçimi numaralandırmalarına dönüştürme gibi dosya biçimleriyle çalışmak için yardımcı yöntemler sağlayan FileFormatUtil sınıfını kullanabilirsiniz. Belgenin şifrelenip şifrelenmediğini ve açmak için bir parola gerektirip gerektirmediğini algılamak için IsEncrypted
özelliğini kullanın.
Aşağıdaki kod örneği, şifrelenmiş olup olmadığının OpenDocument nasıl doğrulanacağını gösterir:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::SharedPtr<FileFormatInfo> info = FileFormatUtil::DetectFileFormat(inputDataDir + u"encrypted.odt"); | |
std::cout << info->get_IsEncrypted() << std::endl; |