Wie man Word-Dokumente in .NET lädt

Wie man Word-Dokumente in .NET lädt

Wie man Word-Dokumente in .NET lädt

Aspose.Words FOSS für .NET liest ein Dokument in den Speicher, sobald Sie ein Document Objekt — jeder Ladevorgang in der Bibliothek fließt durch Document’s Konstruktorüberladungen und die LoadOptions Klasse. Dieser Leitfaden zeigt, wie man ein Dokument aus einer Datei oder einem Stream lädt, ein Passwort oder format-spezifische Einstellungen bereitstellt und steuert, was passiert, wenn das Laden auf eine externe Ressource oder ein möglicherweise fehlerhaftes Dokument trifft. Aspose.Words FOSS für .NET wird aus dem Quellcode gebaut und direkt in einem Projekt referenziert, anstatt aus einem Paket-Feed installiert zu werden — siehe die Installationsanleitung für Build-Schritte, bevor Sie die nachstehenden Aufgaben bearbeiten.


Schritt-für-Schritt-Anleitung

Schritt 1: Laden eines Dokuments aus einer Datei oder einem Stream

Document hat fünf Konstruktoren. Document() erstellt ein neues, leeres Dokument, anstatt eines zu laden. Document(fileName) lädt direkt von einem Pfad auf der Festplatte, und Document(stream) lädt von jedem lesbaren Stream – nützlich, wenn die Quelle keine Datei ist, etwa Inhalte, die bereits im Speicher liegen oder über eine Netzwerkverbindung empfangen wurden. Beide besitzen eine begleitende Überladung, die ein zweites Argument akzeptiert, Document(fileName, loadOptions) und Document(stream, loadOptions), das der Einstiegspunkt für jede weitere Aufgabe in diesem Leitfaden ist.


Schritt 2: Laden eines passwortgeschützten Dokuments

Erstellen Sie ein LoadOptions mit dem Passwort, bevor Sie Document(fileName, loadOptions) (oder die Stream-Überladung) aufrufen. new LoadOptions(password) setzt LoadOptions.Password direkt; alternativ setzen Sie Password an einer parameterlosen LoadOptions()-Instanz, bevor Sie sie übergeben. Geben Sie das Passwort im Voraus an, anstatt zuerst zu laden und auf einen Fehler zu reagieren – Aspose.Words FOSS für .NET benötigt das Passwort, um eine geschützte Datei überhaupt zu parsen, sodass es keinen teilweise geladenen Zustand gibt, von dem man sich erholen könnte.


Schritt 3: Formatbezogene Optionen für Text- und Markdown-Quellen anwenden

Plain-Text- und Markdown-Quellen akzeptieren Einstellungen, die die Basisklasse LoadOptions nicht bereitstellt. TxtLoadOptions fügt AutoNumberingDetection und DetectNumberingWithWhitespaces hinzu, um nummerierte Listen im Klartext zu erkennen, DetectHyperlinks zum Umwandeln von bloßen URLs in Hyperlinks, DocumentDirection (LeftToRight, RightToLeft oder Auto) für die Textflussrichtung und separate LeadingSpacesOptions/TrailingSpacesOptions (vom Typ TxtLeadingSpacesOptions/TxtTrailingSpacesOptions) für die Behandlung von Leerzeichen am Anfang und Ende jeder Zeile. MarkdownLoadOptions fügt PreserveEmptyLines, ImportUnderlineFormatting und SoftLineBreakCharacter hinzu, um zu steuern, wie die Zeilenumbruch-Konventionen von Markdown auf Absätze und Lauftexte abgebildet werden. Beide Unterklassen leiten von LoadOptions ab, sodass ein auf einer von beiden gesetztes Passwort oder ein Ressourcen-Lade-Callback sich genauso verhält wie in der Basisklasse – übergeben Sie die formatbezogene Instanz an Document(fileName, loadOptions) exakt wie Sie ein einfaches LoadOptions übergeben würden.


Schritt 4: Externe Ressourcen beim Laden umleiten oder abfangen

Setzen Sie LoadOptions.ResourceLoadingCallback auf eine Implementierung von IResourceLoadingCallback, wenn Sie steuern müssen, wie eine vom Dokument referenzierte externe Ressource beim Laden aufgelöst wird. Seine ResourceLoading(args)-Methode erhält ein ResourceLoadingArgs, das die ResourceType der Ressource (Image, Font, CssStyleSheet oder Document) beschreibt, zusammen mit Uri und OriginalUri, und gibt ein ResourceLoadingAction zurück – Default, um die Ressource normal zu laden, Skip, um sie auszulassen, oder UserProvided, um durch über ResourceLoadingArgs.SetData(data) bereitgestellte Daten zu ersetzen.


Schritt 5: Sprachstandardwerte und Wiederherstellungsverhalten festlegen

Fehlt die Sprachmetadaten eines Dokuments oder sind sie unzuverlässig, setzen Sie LoadOptions.LanguagePreferences.DefaultEditingLanguage vor dem Laden auf einen EditingLanguage-Wert und verwenden Sie AddEditingLanguage(language) oder AddEditingLanguages(languages) auf LanguagePreferences, um zusätzliche Sprachen zu registrieren, die das Dokument enthalten könnte. Für Quellen, die möglicherweise fehlerhaft sind, setzen Sie LoadOptions.RecoveryMode auf einen DocumentRecoveryMode-Wert – None, um ohne irgendeinen Wiederherstellungsversuch zu laden, oder TryRecover, damit der Loader einige strukturelle Probleme umgeht, anstatt den Ladevorgang vollständig fehlschlagen zu lassen.


Häufige Probleme und Lösungen

Das Laden eines passwortgeschützten Dokuments wirft immer noch eine Ausnahme, nachdem ein Passwort angegeben wurde. Bestätigen Sie, dass das Passwort genau auf dem LoadOptions Instanz übergeben an Document(fileName, loadOptions) (oder die Stream-Überladung) — über new LoadOptions(password) oder durch Setzen Password nachträglich — und dass dies das Objekt ist, das tatsächlich an den Konstruktor übergeben wird. Ein LoadOptions die erstellt wurde, aber nie übergeben an Document hat keine Auswirkung auf das Laden.

Text- oder Markdown-spezifische Einstellungen scheinen nicht zu wirken. Überprüfe, dass ein TxtLoadOptions or MarkdownLoadOptions Instanz — nicht die Basis LoadOptions — wurde an die Document Konstruktor. Nur die Unterklasse stellt die format-spezifischen Eigenschaften bereit; das Übergeben der Basisklasse kompiliert, lässt diese jedoch stillschweigend weg.

Externe Ressourcen werden nicht abgefangen oder umgeleitet. ResourceLoadingCallback muss auf dem gleichen LoadOptions Objekt, das an die Document Konstruktor übergeben wird, und es muss vor dem Ladeaufruf zugewiesen werden. Eine Zuweisung nach Abschluss des Ladens hat keine Wirkung.

Ein fehlerhaftes Dokument schlägt beim Laden nach dem Setzen immer noch fehl. RecoveryMode. DocumentRecoveryMode.TryRecover ermöglicht es dem Loader, einige strukturelle Probleme in einem Dokument zu umgehen, aber schwerere Beschädigungen können dennoch verhindern, dass das Dokument erfolgreich geladen wird.

Ein Dokument, das von einem Stream verhält sich anders als dieselbe Datei, die über einen Pfad geladen wird. Stellen Sie sicher, dass die Position des Streams am Anfang ist, bevor Sie ihn an Document(stream) or Document(stream, loadOptions) — ein Stream, der mitten im Inhalt zurückgelassen wird, lädt nur die verbleibenden Bytes.


Häufig gestellte Fragen

Wie lade ich ein Dokument ohne spezielle Optionen?

Übergeben Sie einen Dateipfad oder ein Stream direkt an Document(fileName) oder Document(stream) — LoadOptions ist nur erforderlich, wenn ein Passwort, formatspezifische Einstellungen oder ein Callback benötigt werden.

Was ist der Unterschied zwischen LoadOptions, TxtLoadOptions und MarkdownLoadOptions?

TxtLoadOptions und MarkdownLoadOptions leiten beide von LoadOptions ab und fügen jeweils Einstellungen hinzu, die spezifisch für Klartext- bzw. Markdown-Quellen sind. Jede allgemeine LoadOptions-Eigenschaft — Passwort, Kodierung, Callbacks — bleibt in beiden Unterklassen verfügbar.

Kann ich ein Dokument direkt aus einem Byte-Array laden?

Packen Sie die Bytes in ein MemoryStream und übergeben Sie diesen Stream an Document(stream) oder Document(stream, loadOptions) — es gibt keinen Konstruktor, der ein Byte-Array direkt akzeptiert.

Wie kann ich steuern, was passiert, wenn der Loader eine externe Ressource nicht auflösen kann?

Implementieren Sie IResourceLoadingCallback und weisen Sie es LoadOptions.ResourceLoadingCallback zu. Geben Sie ResourceLoadingAction.Skip von ResourceLoading(args) zurück, um die Ressource zu überspringen, anstatt den Ladevorgang fehlschlagen zu lassen.

Ändert das Setzen von RecoveryMode, wie ein wohlgeformtes Dokument geladen wird?

Nr. DocumentRecoveryMode ändert das Verhalten nur, wenn der Loader tatsächlich strukturelle Probleme erkennt — ein wohlgeformtes Dokument wird unabhängig von der Einstellung auf dieselbe Weise geladen.


Siehe auch

 Deutsch