Ladeoptionen angeben

Beim Laden eines Dokuments können Sie einige erweiterte Eigenschaften festlegen. Aspose.Words stellt Ihnen die Klasse LoadOptions zur Verfügung, die eine genauere Steuerung des Ladevorgangs ermöglicht. Einige Ladeformate haben eine entsprechende Klasse, die Ladeoptionen für dieses Ladeformat enthält, z. B. gibt es PdfLoadOptions zum Laden in das PDF -Format oder TxtLoadOptions zum Laden in TXT. Dieser Artikel enthält Beispiele für die Arbeit mit Optionen der Klasse LoadOptions.

Setze Microsoft Word Version, um das Aussehen zu ändern

Verschiedene Versionen der Microsoft Word-Anwendung können Dokumente unterschiedlich anzeigen. Beispielsweise gibt es ein bekanntes Problem mit OOXML-Dokumenten wie DOCX oder DOTX, die mit WPS Office erstellt wurden. In solchen Fällen können wesentliche Dokumentauszeichnungselemente fehlen oder anders interpretiert werden, was dazu führt, dass Microsoft Word 2019 ein solches Dokument anders anzeigt als Microsoft Word 2010.

Standardmäßig öffnet Aspose.Words Dokumente mit Microsoft Word 2019-Regeln. Wenn Sie das Laden von Dokumenten so anzeigen möchten, wie es in einer der vorherigen Microsoft Word -Anwendungsversionen der Fall wäre, sollten Sie die gewünschte Version explizit mit der Eigenschaft MswVersion der Klasse LoadOptions angeben.

Das folgende Codebeispiel zeigt, wie Sie die Microsoft Word -Version mit Ladeoptionen festlegen:

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

Legen Sie die Spracheinstellungen fest, um das Erscheinungsbild zu ändern

Die Details der Anzeige eines Dokuments in Microsoft Word hängen nicht nur von der Anwendungsversion und dem Eigenschaftswert MswVersion ab, sondern auch von den Spracheinstellungen. Microsoft Word zeigt Dokumente möglicherweise unterschiedlich an, abhängig von den Dialogeinstellungen “Office-Spracheinstellungen”, die Sie unter “Datei → Optionen → Sprache” finden. In diesem Dialogfeld kann ein Benutzer beispielsweise die Primärsprache, Korrektursprachen, Anzeigesprachen usw. auswählen. Aspose.Words stellt die Eigenschaft LanguagePreferences als Äquivalent zu diesem Dialogfeld bereit. Wenn die Ausgabe von Aspose.Words von der Ausgabe von Microsoft Word abweicht, setzen Sie den entsprechenden Wert für EditingLanguage – dies kann das Ausgabedokument verbessern.

Das folgende Codebeispiel zeigt, wie Japanisch als EditingLanguage festgelegt wird:

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

Verwenden Sie WarningCallback, um Probleme beim Laden eines Dokuments zu kontrollieren

Einige Dokumente sind möglicherweise beschädigt, enthalten ungültige Einträge oder verfügen über Funktionen, die derzeit von Aspose.Words nicht unterstützt werden. Wenn Sie wissen möchten, welche Probleme beim Laden eines Dokuments aufgetreten sind, bietet Aspose.Words die IWarningCallback-Schnittstelle.

Das folgende Codebeispiel zeigt die Implementierung der IWarningCallback-Schnittstelle:

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

Um Informationen über alle Probleme während der Ladezeit zu erhalten, verwenden Sie die Eigenschaft WarningCallback.

Das folgende Codebeispiel zeigt, wie diese Eigenschaft verwendet wird:

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

Verwenden Sie ResourceLoadingCallback, um das Laden externer Ressourcen zu steuern

Ein Dokument kann externe Links zu Bildern enthalten, die sich irgendwo auf einer lokalen Festplatte, im Netzwerk oder im Internet befinden. Aspose.Words lädt solche Bilder automatisch in ein Dokument, aber es gibt Situationen, in denen dieser Prozess kontrolliert werden muss. Zum Beispiel, um zu entscheiden, ob wir ein bestimmtes Bild wirklich laden oder vielleicht überspringen müssen. Mit der Option ResourceLoadingCallback laden können Sie dies steuern.

Das folgende Codebeispiel zeigt die Implementierung der IResourceLoadingCallback-Schnittstelle:

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

Das folgende Codebeispiel zeigt, wie die Eigenschaft ResourceLoadingCallback verwendet wird:

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

Verwenden Sie TempFolder, um eine Speicherausnahme zu vermeiden

Aspose.Words unterstützt extrem große Dokumente mit Tausenden von Seiten voller umfangreicher Inhalte. Das Laden solcher Dokumente kann viel RAM erfordern. Beim Laden benötigt Aspose.Words noch mehr Speicher, um temporäre Strukturen zu speichern, die zum Parsen eines Dokuments verwendet werden.

Wenn beim Laden eines Dokuments ein Problem mit der Ausnahme Nicht genügend Arbeitsspeicher auftritt, versuchen Sie, die Eigenschaft TempFolder zu verwenden. In diesem Fall speichert Aspose.Words einige Daten in temporären Dateien anstelle von Speicher. Dies kann dazu beitragen, eine solche Ausnahme zu vermeiden.

Das folgende Codebeispiel zeigt, wie TempFolder gesetzt wird:

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

Legen Sie die Kodierung explizit fest

Die meisten modernen Dokumentformate speichern ihren Inhalt in Unicode und erfordern keine spezielle Behandlung. Andererseits gibt es immer noch viele Dokumente, die eine Prä-Unicode-Codierung verwenden und manchmal entweder Codierungsinformationen vermissen oder Codierungsinformationen von Natur aus nicht einmal unterstützen. Aspose.Words versucht standardmäßig, die entsprechende Codierung automatisch zu erkennen, aber in seltenen Fällen müssen Sie möglicherweise eine andere Codierung verwenden als die, die von unserem Codierungserkennungsalgorithmus erkannt wurde. Verwenden Sie in diesem Fall die Eigenschaft Encoding, um die Codierung abzurufen oder festzulegen.

Das folgende Codebeispiel zeigt, wie Sie die Codierung so einstellen, dass die automatisch ausgewählte Codierung überschrieben wird:

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

Verschlüsselte Dokumente laden

Sie können Word-Dokumente laden, die mit einem Kennwort verschlüsselt sind. Verwenden Sie dazu eine spezielle Konstruktorüberladung, die ein LoadOptions -Objekt akzeptiert. Dieses Objekt enthält die Eigenschaft Password, die die Kennwortzeichenfolge angibt.

Das folgende Codebeispiel zeigt, wie Sie ein mit einem Kennwort verschlüsseltes Dokument laden:

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

Wenn Sie nicht im Voraus wissen, ob die Datei verschlüsselt ist, können Sie die Klasse FileFormatUtil verwenden, die Hilfsmethoden für die Arbeit mit Dateiformaten bereitstellt, z. B. das Erkennen des Dateiformats oder das Konvertieren von Dateierweiterungen in / aus Dateiformataufzählungen. Verwenden Sie die Eigenschaft IsEncrypted, um festzustellen, ob das Dokument verschlüsselt ist und zum Öffnen ein Kennwort erforderlich ist.

Das folgende Codebeispiel zeigt, wie überprüft wird, ob OpenDocument verschlüsselt ist oder nicht:

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