Określ opcje obciążenia

Podczas wczytywania dokumentu można ustawić pewne zaawansowane właściwości. Aspose.Words zapewnia Państwu LoadOptions klasa, która umożliwia bardziej precyzyjne sterowanie procesem obciążenia. Niektóre formaty obciążenia mają odpowiednią klasę, która posiada opcje obciążenia dla tego formatu obciążenia, na przykład, istnieje PdfLoadOptions do wczytania do formatu PDF lub TxtLoadOptions do załadunku do TXT. Ten artykuł zawiera przykłady pracy z opcjami LoadOptions Klasa.

Ustaw Microsoft Word Wersja do zmiany wyglądu

Różne wersje Microsoft Word aplikacja może wyświetlać dokumenty w inny sposób. Na przykład, istnieje dobrze znany problem z dokumentami OOXML, takich jak DOCX lub DOTX produkowany przy użyciu WPS Office. W takich przypadkach istotne elementy znakowania dokumentów mogą być brakujące lub mogą być interpretowane inaczej powodując Microsoft Word 2019, aby pokazać taki dokument inaczej niż Microsoft Word W 2010 roku.

Domyślnie Aspose.Words otwiera dokumenty za pomocą Microsoft Word Przepisy z 2019 r. Jeśli trzeba, aby dokument wczytywania pojawiają się, jak to się stanie w jednym z poprzednich Microsoft Word wersje aplikacji, należy wyraźnie określić żądaną wersję za pomocą MswVersion Własność LoadOptions Klasa.

Poniższy przykład kodu pokazuje jak ustawić Microsoft Word wersja z opcjami obciążenia:

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

Ustaw preferencje językowe, aby zmienić wygląd

Szczegóły wyświetlania dokumentu w Microsoft Word zależy nie tylko od wersji aplikacji i MswVersion wartość właściwości, ale także na ustawieniach językowych. Microsoft Word mogą wyświetlać różne dokumenty w zależności od ustawień okna dialogowego “Preferencje językowe”, które można znaleźć w “Plik → Opcje → Language”. Korzystanie z tego okna dialogowego użytkownik może wybrać na przykład język pierwotny, języki sprawdzające, języki wyświetlające itp. Aspose.Words zapewnia LanguagePreferences właściwość jako odpowiednik tego okna dialogowego. Jeśli Aspose.Words wyjście różni się od Microsoft Word wyjście, ustawić odpowiednią wartość dla EditingLanguage - to może poprawić dokument wyjściowy.

Poniższy przykład kodu pokazuje jak ustawić japoński jako EditingLanguage:

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

Stosowanie WarningCallback do kontroli problemów Podczas wczytywania dokumentu

Niektóre dokumenty mogą być uszkodzone, zawierają nieprawidłowe wpisy lub nie mają funkcji obsługiwanych przez Aspose.Words. Jeśli chcesz wiedzieć o problemach, które wystąpiły podczas wczytywania dokumentu, Aspose.Words zapewnia IWarningCallback interfejs.

Poniższy przykład kodu pokazuje wdrożenie IWarningCallback interfejs:

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

Aby uzyskać informacje na temat wszystkich problemów w czasie obciążenia, należy użyć WarningCallback nieruchomości.

Poniższy przykład kodu pokazuje jak korzystać z tej właściwości:

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

Użyj ResourceLoading Zawołanie do kontroli zewnętrznych zasobów

Dokument może zawierać zewnętrzne linki do obrazów znajdujących się gdzieś na lokalnym dysku, sieci lub Internecie. Aspose.Words automatycznie ładuje takie obrazy do dokumentu, ale są sytuacje, w których proces ten wymaga kontroli. Na przykład, aby zdecydować, czy naprawdę musimy załadować pewien obraz, czy może go pominąć. W ResourceLoadingCallback opcja obciążenia pozwala kontrolować to.

Poniższy przykład kodu pokazuje wdrożenie IResourceLoadingCallback interfejs:

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

Poniższy przykład kodu pokazuje jak używać ResourceLoadingCallback nieruchomość:

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

Użyj folderu Tempus, aby uniknąć wyjątków pamięci

Aspose.Words obsługuje niezwykle duże dokumenty, które mają tysiące stron pełnych bogatej treści. Ładowanie takich dokumentów może wymagać dużej ilości pamięci RAM. W procesie załadunku, Aspose.Words potrzebuje jeszcze więcej pamięci do przechowywania tymczasowych struktur używanych do przetwarzania dokumentu.

Jeśli masz problem z wyjątkiem Out of Memory podczas wczytywania dokumentu, spróbuj użyć TempFolder nieruchomości. W tym przypadku, Aspose.Words będzie przechowywać niektóre dane w plikach tymczasowych zamiast pamięci, a to może pomóc uniknąć takiego wyjątku.

Poniższy przykład kodu pokazuje jak ustawić TempFolder:

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

Ustaw kodowanie Wyraźnie

Większość nowoczesnych formatów dokumentów przechowuje zawartość w Unicode i nie wymagają specjalnej obsługi. Z drugiej strony, nadal istnieje wiele dokumentów, które używają kodowania pre- Unicode i czasami albo pomijają informacje kodowania lub nawet nie wspierają kodowania informacji z natury. Aspose.Words próbuje automatycznie wykrywać kodowanie, ale w rzadkich przypadkach może być konieczne użycie kodowania innego niż wykryte przez nasz algorytm rozpoznawania kodowania. W tym przypadku należy użyć Encoding właściwość do uzyskania lub ustawienia kodowania.

Poniższy przykład kodu pokazuje, jak ustawić kodowanie w celu obejścia automatycznie wybranego kodowania:

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

Wczytaj zaszyfrowane dokumenty

Możesz załadować Dokumenty słowne zaszyfrowane hasłem. Aby to zrobić, użyj specjalnego przeciążenia konstruktora, który akceptuje LoadOptions obiekt. Ten obiekt zawiera Password właściwość, która określa ciąg haseł.

Poniższy przykład kodu pokazuje jak załadować dokument zaszyfrowany hasłem:

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

Jeśli nie wiesz wcześniej, czy plik jest zaszyfrowany, możesz użyć FileFormatUtil class, która zapewnia metody użyteczności do pracy z formatami plików, takie jak wykrywanie formatu plików lub konwertowanie rozszerzeń plików do / z notowań formatów plików. Aby wykryć, czy dokument jest zaszyfrowany i wymaga hasła, aby go otworzyć, należy użyć IsEncrypted nieruchomości.

Poniższy przykład kodu pokazuje jak zweryfikować OpenDocument albo jest zaszyfrowany, albo nie:

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