Yük Seçeneklerini Belirtin
Bir belge yüklerken bazı gelişmiş özellikleri ayarlayabilirsiniz. Aspose.Words size daha kesin kontrolü sağlayan LoadOptions sınıfını sağlar. Bazı yükleme biçimleri bu yükleme biçimi için yükleme seçenekleri tutan karşılık gelen bir sınıfa sahiptir, örneğin PDF formatına yüklemek için PdfLoadOptions veya TXT formatına yüklemek için TxtLoadOptions vardır. Bu makale LoadOptions sınıfının seçenekleriyle çalışmanın örneklerini içerir.
Görünümünü Değiştirmek İçin Microsoft Word Sürümü Ayarla
Farklı sürümlerdeki Microsoft Word uygulaması belgeleri farklı şekilde görüntüleyebilir. Örneğin, DOCX veya DOTX olarak üretilmiş WPS Office tarafından oluşturulan OOXML belgeleri ile ilgili iyi bilinen bir sorun vardır. Böyle durumlarda, temel belge işaretleme öğeleri eksik olabilir veya farklı yorumlanacaklar ve bu da Microsoft Word 2019’un böyle bir belgeyi Microsoft Word 2010’dan farklı şekilde görüntülemesine neden olacaktır.
Varsayılan olarak Aspose.Words belgeleri Microsoft Word 2019 kuralları kullanarak açar. Bir önceki Microsoft Word uygulama sürümlerinde bir belge yükleniyormuş gibi görünmesi gerekiyorsa, istediğiniz sürümü açıkça belirtmek için MswVersion özelliğini LoadOptions sınıfına kullanmalısınız.
Aşağıdaki kod örneği yükleme seçenekleri ile Microsoft Word sürümünü nasıl ayarlayacağını göstermektedir:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
// Specify load option to specify MS Word version | |
LoadOptions loadOptions = new LoadOptions(); | |
loadOptions.setMswVersion(MsWordVersion.WORD_2003); | |
Document doc = new Document(dataDir + "document.doc", loadOptions); | |
doc.save(dataDir + "Word2003_out.docx"); |
Dil Tercihlerini Değiştirerek Görünümü Değiştir
Bir belgeyi Microsoft Word içinde görüntülemenin ayrıntıları, yalnızca uygulama sürümü ve MswVersion özellik değeri değil, aynı zamanda dil ayarları da bağlıdır. Microsoft Word ‘Office Language Preferences’ iletişim kutusu ayarlarına bağlı olarak belgeleri farklı gösterebilir, bu iletişim kutusunu “Dosya → Seçenekler → Dil” altında bulabilirsiniz. Kullanıcı, örneğin, birincil dil, denetim dilleri, görüntüleme dilleri vb.‘yi seçebilir. Aspose.Words ‘den LanguagePreferences özelliğini eşdeğer olarak alır. Aspose.Words’ün çıktısı farklıysa Microsoft Word’ün çıktısından, uygun değeri EditingLanguage‘e ayarlayın - bu, çıktı belgelerini geliştirebilir.
Aşağıdaki kod örneği, Japonca EditingLanguage‘i nasıl ayarlayacağını göstermektedir:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
// Specify LoadOptions to add Editing Language | |
LoadOptions loadOptions = new LoadOptions(); | |
loadOptions.getLanguagePreferences().addEditingLanguage(EditingLanguage.JAPANESE); | |
Document doc = new Document(dataDir + "languagepreferences.docx", loadOptions); | |
int localeIdFarEast = doc.getStyles().getDefaultFont().getLocaleIdFarEast(); | |
if (localeIdFarEast == (int) EditingLanguage.JAPANESE) | |
System.out.println("The document either has no any FarEast language set in defaults or it was set to Japanese originally."); | |
else | |
System.out.println("The document default FarEast language was set to another than Japanese language originally, so it is not overridden."); |
Bir belge yüklerken sorunlarla başa çıkmak için WarningCallback kullanın
Bazı belgeler bozulmuş olabilir, geçersiz girdiler içerebilir veya şu anda Aspose.Words tarafından desteklenmeyen özellikler içerebilir. Bir belgenin yüklenirken meydana gelen sorunlar hakkında bilgi almak istiyorsanız, Aspose.Words IWarningCallback arayüzünü sağlar.
Aşağıdaki kod örneği IWarningCallback arabiriminin uygulanmasını göstermektedir:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
private static class DocumentLoadingWarningCallback implements IWarningCallback { | |
public void warning(WarningInfo info) { | |
// Prints warnings and their details as they arise during document loading. | |
System.out.println("WARNING: " + info.getWarningType() + " source:" + info.getSource()); | |
System.out.println("\tDescription: " + info.getDescription()); | |
} | |
} |
Tüm yükleme süreleri boyunca tüm sorunlar hakkında bilgi almak için WarningCallback özelliğini kullanın.
Aşağıdaki kod örneğinde bu özelliğin nasıl kullanılacağını göstermektedir:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
// Create a new LoadOptions object and set its WarningCallback property. | |
LoadOptions loadOptions = new LoadOptions(); | |
loadOptions.setWarningCallback(new DocumentLoadingWarningCallback()); | |
Document doc = new Document(dataDir + "input.docx", loadOptions); |
Dış Kaynak Yüklemesini Kontrol etmek için ResourceLoadingCallback Kullanın
Bir belge başka bir yerde bulunan ve yerel disklerde, ağlarda veya internette bulunan resimlere dış bağlantılar içerebilir. Aspose.Words otomatik olarak bu resimleri belgeye yükler fakat bu işlem kontrolü gereken durumlar vardır. Örneğin, belirli bir resmi gerçekten ihtiyacımız olup olmadığını ya da belki atlayıp geçip geçmeyeceğimizi karar vermemiz gerekir. ResourceLoadingCallback yükleme seçeneği size bunu kontrol etmenizi sağlar.
Aşağıdaki kod örneği IResourceLoadingCallback arayüzünün uygulanmasını göstermektedir:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
private static class HtmlLinkedResourceLoadingCallback implements IResourceLoadingCallback { | |
public int resourceLoading(ResourceLoadingArgs args) throws Exception { | |
switch (args.getResourceType()) { | |
case ResourceType.CSS_STYLE_SHEET: { | |
System.out.println("External CSS Stylesheet found upon loading: " + args.getOriginalUri()); | |
// CSS file will don't used in the document | |
return ResourceLoadingAction.SKIP; | |
} | |
case ResourceType.IMAGE: { | |
// Replaces all images with a substitute | |
String newImageFilename = "Logo.jpg"; | |
System.out.println("\tImage will be substituted with: " + newImageFilename); | |
BufferedImage newImage = ImageIO | |
.read(new File(Utils.getDataDir(LoadOptionsCallbacks.class) + newImageFilename)); | |
ByteArrayOutputStream baos = new ByteArrayOutputStream(); | |
ImageIO.write(newImage, "jpg", baos); | |
baos.flush(); | |
byte[] imageBytes = baos.toByteArray(); | |
baos.close(); | |
args.setData(imageBytes); | |
// New images will be used instead of presented in the document | |
return ResourceLoadingAction.USER_PROVIDED; | |
} | |
case ResourceType.DOCUMENT: { | |
System.out.println("External document found upon loading: " + args.getOriginalUri()); | |
// Will be used as usual | |
return ResourceLoadingAction.DEFAULT; | |
} | |
default: | |
throw new Exception("Unexpected ResourceType value."); | |
} | |
} | |
} |
Aşağıdaki kod örneği, ResourceLoadingCallback özelliğini nasıl kullanacağınızı gösterir
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
// Create a new LoadOptions object and set its ResourceLoadingCallback attribute | |
// as an instance of our IResourceLoadingCallback implementation | |
LoadOptions loadOptions = new LoadOptions(); | |
loadOptions.setResourceLoadingCallback(new 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 | |
Document doc = new Document(dataDir + "Images.html", loadOptions); | |
doc.save(dataDir + "Document.LoadOptionsCallback_out.pdf"); |
Bellek Özel Durmasını Kaçırmak için TempFolder Kullanın
Aspose.Words binlerce sayfalık zengin içeriğe sahip çok büyük belgeleri destekler. Bu gibi belgelerin yüklenmesi bol miktarda RAM gerektirebilir. Bir belgeyi ayrıştırırken kullanılan geçici yapılara sahip olabilmek için Aspose.Words’ın daha fazla bellekye ihtiyacı vardır.
Bir belge yüklerken bellek eksikliği özel durumuyla karşılaşırsanız, TempFolder özelliğini kullanmayı deneyin. Bu durumda, Aspose.Words, bellek yerine geçici dosyalar içinde bazı verileri depolayacak ve bu tür bir özel durumu önlemeye yardımcı olabilir.
Aşağıdaki kod örneği TempFolder‘ı nasıl ayarlayacağını gösterir:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
// Specify LoadOptions to set Temp Folder | |
LoadOptions lo = new LoadOptions(); | |
lo.setTempFolder("C:\\TempFolder\\"); | |
Document doc = new Document(dataDir + "document.doc", lo); |
Kodu Açıkça Ayarla
Çoğu modern belge formatı içeriğini Unicode’de depolar ve özel bir işleme gerektirmez. Öte yandan, hala birçok belgenin bazı ön-Unicode kodlamayı kullandığı ve bazen kodlama bilgilerini eksik bıraktığı veya doğası gereği kodlama bilgisini desteklemediği durumlar vardır. Aspose.Words varsayılan olarak uygun kodlamayı otomatik olarak tespit etmeye çalışır fakat nadiren, algılanan kodlamadan farklı bir kodlamayı kullanmanız gerekebilir. Bu durumda, kodlamayı almak veya ayarlamak için Encoding özelliğini kullanın.
Aşağıdaki kod örneği otomatik olarak seçilen kodlamayı geçersiz kılmak için kodlamayı nasıl ayarlayacağınızı göstermektedir:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
// Set the Encoding attribute in a LoadOptions object to override the | |
// automatically chosen encoding with the one we know to be correct | |
LoadOptions loadOptions = new LoadOptions(); | |
loadOptions.setEncoding(java.nio.charset.Charset.forName("UTF-8")); | |
Document doc = new Document(dataDir + "Encoded in UTF-8.txt", loadOptions); |
Şifreli Dokümanları Yükle
Parola ile şifrelendiğinde Word belgelerini yükleyebilirsiniz. Bunu yapmak için özel bir oluşturucu aşırı yüklemesini kullanın ve bir LoadOptions nesnesi kabul edin. Bu nesne Password özelliğini içerir ve parola dizesi belirtir.
Aşağıdaki kod örneği, bir parolayla şifrelenen bir belgeyi nasıl yükleyeceğinizi göstermektedir:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
// For complete examples and data files, please go to | |
// https://github.com/aspose-words/Aspose.Words-for-Java | |
// Load the encrypted document from the absolute path on disk. | |
Document doc = new Document(dataDir + "LoadEncrypted.docx", new LoadOptions("aspose")); |
Eğer dosyanın şifrelendiğini önceden bilmiyorsanız FileFormatUtil sınıfını kullanabilirsiniz, bu sınıf dosya biçimleriyle çalışmak için yararlı yöntemler sağlar, örneğin dosya biçimini tespit etmek ya da dosya uzantılarını dosya biçimi numaralandırmalarından dönüştürmek. Eğer bir belge şifre korumalı ve açılabilmesi için şifre gerektiriyorsa IsEncrypted özelliğini kullanın.
Aşağıdaki kod örneğinde, OpenDocument’in şifreli olup olmadığına göre nasıl doğrulanacağını gösterir
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
FileFormatInfo info = FileFormatUtil.detectFileFormat(dataDir + "encrypted.odt"); | |
System.out.println(info.isEncrypted()); |