Hoe Word-documenten te laden in .NET
Hoe Word-documenten te laden in .NET
Aspose.Words FOSS voor .NET leest een document in het geheugen zodra je een Document object — elk laadpad in de bibliotheek loopt via Document’s constructor overloads en de LoadOptions class. Deze gids laat zien hoe je een document laadt vanuit een bestand of een stream, een wachtwoord of format-specifieke instellingen opgeeft, en controleert wat er gebeurt wanneer het laden een externe bron of een mogelijk slecht gevormd document tegenkomt. Aspose.Words FOSS voor .NET wordt vanuit de bron gebouwd en direct in een project gerefereerd in plaats van geïnstalleerd vanuit een pakketfeed — zie de Installatiehandleiding voor bouwstappen voordat je de onderstaande taken doorloopt.
Stap-voor-stap gids
Stap 1: Laad een document van een bestand of stream
Document heeft vijf constructoren. Document() maakt een nieuw, leeg document aan in plaats van er een te laden. Document(fileName) laadt direct vanaf een pad op schijf, en Document(stream) laadt vanaf elke leesbare Stream — handig wanneer de bron geen bestand is, bijvoorbeeld inhoud die al in het geheugen staat of ontvangen via een netwerkverbinding. Beide hebben een bijbehorende overload die een tweede argument accepteert, Document(fileName, loadOptions) en Document(stream, loadOptions), die het toegangspunt is voor elke andere taak in deze gids.
Stap 2: Laad een wachtwoord-beveiligd document
Construeer een LoadOptions met het wachtwoord voordat je Document(fileName, loadOptions) aanroept (of de stream-overload). new LoadOptions(password) stelt LoadOptions.Password direct in; je kunt ook Password instellen op een parameterloze LoadOptions()-instantie voordat je deze doorgeeft. Lever het wachtwoord vooraf aan in plaats van eerst te laden en te reageren op een fout — Aspose.Words FOSS voor .NET heeft het wachtwoord nodig om een beschermd bestand te parseren, dus er is geen gedeeltelijk geladen toestand om van te herstellen.
Stap 3: Pas formaat-specifieke opties toe voor tekst- en Markdown-bronnen
Platte-tekst- en Markdown-bronnen accepteren instellingen die de basis LoadOptions niet blootlegt. TxtLoadOptions voegt AutoNumberingDetection en DetectNumberingWithWhitespaces toe voor het herkennen van genummerde lijsten in platte tekst, DetectHyperlinks voor het omzetten van blote URL’s naar hyperlinks, DocumentDirection (LeftToRight, RightToLeft of Auto) voor de tekstrichting, en afzonderlijke LeadingSpacesOptions/TrailingSpacesOptions (van type TxtLeadingSpacesOptions/TxtTrailingSpacesOptions) voor het omgaan met witruimte aan het begin en einde van elke regel. MarkdownLoadOptions voegt PreserveEmptyLines, ImportUnderlineFormatting en SoftLineBreakCharacter toe voor het beheersen hoe de regeleinde-conventies van Markdown worden gemapt naar alinea’s en runs. Beide subklassen afleiden zich van LoadOptions, zodat een wachtwoord of resource-laad-callback die op een van beide is ingesteld zich hetzelfde gedraagt als op de basisklasse — geef de formaat-specifieke instantie door aan Document(fileName, loadOptions) precies zoals je een gewone LoadOptions zou doen.
Stap 4: Redirect of onderschep externe bronnen tijdens het laden
Stel LoadOptions.ResourceLoadingCallback in op een implementatie van IResourceLoadingCallback wanneer je moet bepalen hoe een extern resource die door het document wordt gerefereerd, wordt opgelost tijdens het laden. Zijn ResourceLoading(args)-methode ontvangt een ResourceLoadingArgs die de ResourceType van de resource beschrijft (Image, Font, CssStyleSheet of Document) samen met Uri en OriginalUri, en retourneert een ResourceLoadingAction — Default om de resource normaal te laden, Skip om deze weg te laten, of UserProvided om data te substitueren die via ResourceLoadingArgs.SetData(data) wordt geleverd.
Stap 5: Stel taalstandaarden en herstelgedrag in
Wanneer de taalmetadata van een document ontbreekt of onbetrouwbaar is, stel LoadOptions.LanguagePreferences.DefaultEditingLanguage in op een EditingLanguage-waarde vóór het laden, en gebruik AddEditingLanguage(language) of AddEditingLanguages(languages) op LanguagePreferences om extra talen te registreren die het document kan bevatten. Voor bronnen die mogelijk slecht gevormd zijn, stel LoadOptions.RecoveryMode in op een DocumentRecoveryMode-waarde — None om te laden zonder enige herstelpoging, of TryRecover om de loader bepaalde structurele problemen te laten omzeilen in plaats van het laden volledig te laten mislukken.
Veelvoorkomende problemen en oplossingen
Het laden van een met wachtwoord beschermd document geeft nog steeds een uitzondering na het opgeven van een wachtwoord. Bevestig dat het wachtwoord exact is ingesteld op de LoadOptions instance doorgegeven aan Document(fileName, loadOptions) (of de stream-overload) — via new LoadOptions(password) of door instellen Password nadien — en dat dit het object is dat daadwerkelijk aan de constructor wordt doorgegeven. A LoadOptions die werd aangemaakt maar nooit werd overhandigd aan Document heeft geen effect op de load.
Tekst- of Markdown-specifieke instellingen lijken niet van toepassing te zijn. Controleer dat een TxtLoadOptions or MarkdownLoadOptions instantie — niet de basis LoadOptions — werd doorgegeven aan de Document constructor. Alleen de subklasse maakt de formaat-specifieke eigenschappen beschikbaar; het doorgeven van de basisklasse compileert wel, maar laat ze stilzwijgend vallen.
Externe bronnen worden niet onderschept of omgeleid. ResourceLoadingCallback moet worden ingesteld op dezelfde LoadOptions object dat wordt doorgegeven aan de Document constructor, en moet worden toegewezen vóór de load-aanroep. Toewijzen erna, nadat het laden al voltooid is, heeft geen effect.
Een slecht gevormd document blijft falen bij het laden na het instellen van RecoveryMode. DocumentRecoveryMode.TryRecover laat de loader enkele structurele problemen in een document omzeilen, maar ernstigere corruptie kan nog steeds voorkomen dat het document succesvol wordt geladen.
Een document geladen vanaf een Stream gedraagt zich anders dan hetzelfde bestand dat via pad wordt geladen. Controleer of de positie van de stream aan het begin staat voordat u deze doorgeeft aan Document(stream) or Document(stream, loadOptions) — een stream die halverwege zijn inhoud is achtergelaten, laadt alleen de resterende bytes.
Veelgestelde vragen
Hoe laad ik een document zonder speciale opties?
Geef een bestandspad of een Stream direct door aan Document(fileName) of Document(stream) — LoadOptions is alleen vereist wanneer een wachtwoord, format-specifieke instellingen of een callback nodig is.
Wat is het verschil tussen LoadOptions, TxtLoadOptions en MarkdownLoadOptions?
TxtLoadOptions en MarkdownLoadOptions zijn beide afgeleid van LoadOptions en voegen respectievelijk instellingen toe die specifiek zijn voor plain-text- en Markdown-bronnen. Elke algemene LoadOptions-eigenschap — wachtwoord, codering, callbacks — blijft beschikbaar in beide subklassen.
Kan ik een document direct vanuit een byte-array laden?
Wikkel de bytes in een MemoryStream en geef die stream door aan Document(stream) of Document(stream, loadOptions) — er is geen constructor die een byte-array direct accepteert.
Hoe kan ik bepalen wat er gebeurt wanneer de loader een externe bron niet kan oplossen?
Implementeer IResourceLoadingCallback en wijs deze toe aan LoadOptions.ResourceLoadingCallback. Retourneer ResourceLoadingAction.Skip vanuit ResourceLoading(args) om de bron over te slaan in plaats van de lading te laten falen.
Verandert het instellen van RecoveryMode hoe een goed gevormd document wordt geladen?
Nee. DocumentRecoveryMode verandert alleen het gedrag wanneer de loader daadwerkelijk structurele problemen tegenkomt — een goed gevormd document wordt op dezelfde manier geladen, ongeacht de instelling.