Jak načíst dokumenty Word v .NET
Jak načíst Word dokumenty v .NET
Aspose.Words FOSS pro .NET načte dokument do paměti hned, jakmile vytvoříte Document objekt — každá cesta načítání v knihovně je směrována přes Document’s konstruktorová přetížení a LoadOptions třídu. Tento průvodce ukazuje, jak načíst dokument ze souboru nebo proudu, poskytnout heslo nebo nastavení specifická pro formát a řídit, co se stane, když načítání narazí na externí zdroj nebo dokument, který může být poškozený. Aspose.Words FOSS pro .NET je sestaven ze zdrojového kódu a odkazován přímo v projektu místo instalace z balíčkového zdroje — viz Instalační příručka pro kroky sestavení před prováděním úkolů níže.
Průvodce krok za krokem
Krok 1: Načíst dokument ze souboru nebo proudu
Document má pět konstruktorů. Document() vytvoří nový prázdný dokument místo načtení existujícího. Document(fileName) načte přímo z cesty na disku a Document(stream) načte z libovolného čitelného Stream – užitečné, když zdroj není soubor, například obsah již v paměti nebo přijatý přes síťové spojení. Oba mají doprovodné přetížení, které přijímá druhý argument, Document(fileName, loadOptions) a Document(stream, loadOptions), což je vstupní bod pro všechny ostatní úkoly v tomto průvodci.
Krok 2: Načíst dokument chráněný heslem
Vytvořte LoadOptions s heslem před voláním Document(fileName, loadOptions) (nebo přetížením proudu). new LoadOptions(password) nastaví LoadOptions.Password přímo; alternativně nastavte Password na instanci LoadOptions() bez parametrů před jejím předáním. Poskytněte heslo předem místo načítání nejprve a reakce na selhání — Aspose.Words FOSS pro .NET potřebuje heslo k analýze chráněného souboru vůbec, takže neexistuje částečně načtený stav, ze kterého by se dalo zotavit.
Krok 3: Použít specifické volby formátu pro textové a Markdown zdroje
Textové a Markdown zdroje akceptují nastavení, která základní LoadOptions neexponuje. TxtLoadOptions přidává AutoNumberingDetection a DetectNumberingWithWhitespaces pro rozpoznávání číslovaných seznamů v prostém textu, DetectHyperlinks pro převod holých URL na hypertextové odkazy, DocumentDirection (LeftToRight, RightToLeft nebo Auto) pro směr toku textu a samostatné LeadingSpacesOptions/TrailingSpacesOptions (typu TxtLeadingSpacesOptions/TxtTrailingSpacesOptions) pro manipulaci s bílými znaky na začátku a konci každého řádku. MarkdownLoadOptions přidává PreserveEmptyLines, ImportUnderlineFormatting a SoftLineBreakCharacter pro řízení toho, jak konvence zalamování řádků v Markdownu mapují na odstavce a běhy. Obě podtřídy odvozují od LoadOptions, takže heslo nebo callback pro načítání zdrojů nastavený na jedné z nich se chová stejně jako v základní třídě — předávejte instanci specifickou pro formát do Document(fileName, loadOptions) přesně tak, jako byste předali prostý LoadOptions.
Krok 4: Přesměrovat nebo zachytit externí zdroje během načítání
Nastavte LoadOptions.ResourceLoadingCallback na implementaci IResourceLoadingCallback, když potřebujete řídit, jak je externí zdroj odkazovaný v dokumentu během načítání vyřešen. Jeho metoda ResourceLoading(args) přijímá ResourceLoadingArgs popisující ResourceType zdroje (Image, Font, CssStyleSheet nebo Document) spolu s Uri a OriginalUri a vrací ResourceLoadingAction — Default pro běžné načtení zdroje, Skip pro jeho vynechání nebo UserProvided pro nahrazení daty poskytnutým přes ResourceLoadingArgs.SetData(data).
Krok 5: Nastavit výchozí jazyk a chování při zotavení
Když chybí nebo je nespolehlivé jazykové metadata dokumentu, nastavte LoadOptions.LanguagePreferences.DefaultEditingLanguage na EditingLanguage hodnotu před načtením a použijte AddEditingLanguage(language) nebo AddEditingLanguages(languages) na LanguagePreferences k registraci dalších jazyků, které dokument může obsahovat. Pro zdroje, které mohou být poškozené, nastavte LoadOptions.RecoveryMode na DocumentRecoveryMode hodnotu — None pro načtení bez jakéhokoli pokusu o zotavení, nebo TryRecover pro to, aby načítač obcházel některé strukturální problémy místo úplného selhání načtení.
Časté problémy a opravy
Načítání dokumentu chráněného heslem stále vyvolá výjimku i po zadání hesla. Potvrďte, že heslo bylo nastaveno na přesném LoadOptions instance předaná do Document(fileName, loadOptions) (nebo přetížení proudu) — přes new LoadOptions(password) nebo nastavením Password poté — a že to je objekt skutečně předaný konstruktoru. A LoadOptions který byl vytvořen, ale nikdy předán Document nemá žádný vliv na načtení.
Nastavení specifická pro Text nebo Markdown se nezdají uplatňovat. Zkontrolujte, že a TxtLoadOptions or MarkdownLoadOptions instance — ne základní LoadOptions — byl předán do Document konstruktoru. Pouze podtřída vystavuje formátově specifické vlastnosti; předání základní třídy se přeloží, ale tiše je zahodí.
Externí zdroje nejsou zachytávány ani přesměrovány. ResourceLoadingCallback musí být nastaveno na stejném LoadOptions objekt předaný do Document konstruktoru, a musí být přiřazeno před voláním load. Přidělení po dokončení načítání nemá žádný efekt.
Poškozený dokument stále selže při načítání po nastavení RecoveryMode. DocumentRecoveryMode.TryRecover umožňuje načítači obejít některé strukturální problémy v dokumentu, ale závažnější poškození může stále zabránit úspěšnému načtení dokumentu.
Dokument načtený z Stream se chová jinak než stejný soubor načtený podle cesty. Ověřte, že pozice proudu je na začátku, než ji předáte Document(stream) or Document(stream, loadOptions) — proud, který byl přerušen uprostřed svého obsahu, načte pouze zbývající bajty.
Často kladené otázky
Jak načtu dokument bez jakýchkoli speciálních možností?
Předávejte cestu k souboru nebo Stream přímo do Document(fileName) nebo Document(stream) — LoadOptions je vyžadováno pouze v případě, že je potřeba heslo, nastavení specifické pro formát nebo zpětné volání.
Jaký je rozdíl mezi LoadOptions, TxtLoadOptions a MarkdownLoadOptions?
TxtLoadOptions a MarkdownLoadOptions oba vycházejí z LoadOptions a přidávají nastavení specifické pro prostý text a zdroje ve formátu Markdown. Každá obecná vlastnost LoadOptions — heslo, kódování, zpětná volání — zůstává dostupná v obou podtřídách.
Mohu načíst dokument přímo z pole bajtů?
Zabalte bajty do MemoryStream a předávejte tento stream do Document(stream) nebo Document(stream, loadOptions) — neexistuje žádný konstruktor, který by přijímal pole bajtů přímo.
Jak mohu řídit, co se stane, když načítač nedokáže vyřešit externí zdroj?
Implementujte IResourceLoadingCallback a přiřaďte jej k LoadOptions.ResourceLoadingCallback. Vraťte ResourceLoadingAction.Skip z ResourceLoading(args), abyste zdroj vynechali místo toho, aby načítání selhalo.
Mění nastavení RecoveryMode, jak se načítá dobře formovaný dokument?
Ne. DocumentRecoveryMode mění chování pouze tehdy, když načítač skutečně narazí na strukturální problémy — dobře formovaný dokument se načte stejným způsobem bez ohledu na nastavení.