Cum să încărcați documente Word în .NET
Cum să încărcați documente Word în .NET
Aspose.Words FOSS pentru .NET citește un document în memorie imediat ce construiești un Document obiect — fiecare cale de încărcare din bibliotecă trece prin Document’s suprasarcinile constructorului și LoadOptions clasa. Acest ghid arată cum să încarci un document dintr-un fișier sau un flux, să furnizezi o parolă sau setări specifice formatului și să controlezi ce se întâmplă când încărcarea întâlnește o resursă externă sau un document care ar putea fi malformat. Aspose.Words FOSS pentru .NET este construit din sursă și referențiat direct într-un proiect în loc să fie instalat dintr-un feed de pachete — vezi Ghidul de instalare pentru pașii de construire înainte de a parcurge sarcinile de mai jos.
Ghid pas cu pas
Pasul 1: Încărcați un document dintr-un fișier sau flux
Document are cinci constructori. Document() creează un document nou, gol, în loc să încarce unul. Document(fileName) încarcă direct dintr-o cale de pe disc, iar Document(stream) încarcă din orice Stream citibil — util când sursa nu este un fișier, cum ar fi conținut deja în memorie sau primit printr-o conexiune de rețea. Ambele au o suprasarcină însoțitoare care acceptă un al doilea argument, Document(fileName, loadOptions) și Document(stream, loadOptions), care constituie punctul de intrare pentru fiecare altă sarcină din acest ghid.
Pasul 2: Încărcați un document protejat prin parolă
Construiți un LoadOptions cu parola înainte de a apela Document(fileName, loadOptions) (sau suprasarcina de flux). new LoadOptions(password) setează LoadOptions.Password direct; alternativ, setați Password pe o instanță LoadOptions() fără parametri înainte de a o transmite. Furnizați parola în avans în loc să încărcați mai întâi și să reacționați la o eroare — Aspose.Words FOSS pentru .NET are nevoie de parolă pentru a analiza un fișier protejat, așa că nu există un stare parțial încărcată de recuperat.
Pasul 3: Aplicați opțiuni specifice formatului pentru sursele Text și Markdown
Sursele text simplu și Markdown acceptă setări pe care baza LoadOptions nu le expune. TxtLoadOptions adaugă AutoNumberingDetection și DetectNumberingWithWhitespaces pentru recunoașterea listelor numerotate în text simplu, DetectHyperlinks pentru transformarea URL-urilor brute în hyperlinkuri, DocumentDirection (LeftToRight, RightToLeft sau Auto) pentru direcția fluxului de text, și LeadingSpacesOptions/TrailingSpacesOptions separate (de tip TxtLeadingSpacesOptions/TxtTrailingSpacesOptions) pentru gestionarea spațiilor albe la începutul și sfârșitul fiecărei linii. MarkdownLoadOptions adaugă PreserveEmptyLines, ImportUnderlineFormatting și SoftLineBreakCharacter pentru controlul modului în care convențiile de întrerupere a liniei din Markdown se mapază pe paragrafe și secvențe. Ambele subclase derivă din LoadOptions, astfel încât o parolă sau un callback de încărcare a resurselor setat pe oricare dintre ele se comportă la fel ca pe clasa de bază — transmiteți instanța specifică formatului către Document(fileName, loadOptions) exact așa cum ați face cu un simplu LoadOptions.
Pasul 4: Redirecționați sau interceptați resursele externe în timpul încărcării
Setați LoadOptions.ResourceLoadingCallback la o implementare a IResourceLoadingCallback când trebuie să controlați modul în care o resursă externă referențiată de document este rezolvată în timpul încărcării. Metoda sa ResourceLoading(args) primește un ResourceLoadingArgs care descrie ResourceType resursei (Image, Font, CssStyleSheet sau Document) împreună cu Uri și OriginalUri, și returnează un ResourceLoadingAction — Default pentru a încărca resursa în mod normal, Skip pentru a o omite, sau UserProvided pentru a substitui datele furnizate prin ResourceLoadingArgs.SetData(data).
Pasul 5: Stabiliți valorile implicite ale limbii și comportamentul de recuperare
Când metadatele de limbă ale unui document lipsesc sau nu sunt de încredere, setați LoadOptions.LanguagePreferences.DefaultEditingLanguage la o valoare EditingLanguage înainte de încărcare și utilizați AddEditingLanguage(language) sau AddEditingLanguages(languages) pe LanguagePreferences pentru a înregistra limbile suplimentare pe care documentul le poate conține. Pentru sursele care ar putea fi defecte, setați LoadOptions.RecoveryMode la o valoare DocumentRecoveryMode — None pentru a încărca fără nicio încercare de recuperare, sau TryRecover pentru ca încărcătorul să ocolească unele probleme structurale în loc să eșueze complet încărcarea.
Probleme comune și soluții
Încărcarea unui document protejat prin parolă aruncă în continuare o excepție după furnizarea parolei. Confirmă că parola a fost setată pe exact LoadOptions instanță transmisă la Document(fileName, loadOptions) (sau suprascrierea fluxului) — prin new LoadOptions(password) sau prin setarea Password după — și că acesta este obiectul transmis efectiv constructorului. Un LoadOptions care a fost creat, dar nu a fost niciodată predat Document nu are niciun efect asupra încărcării.
Setările specifice pentru Text sau Markdown par să nu se aplice. Verificați că un TxtLoadOptions or MarkdownLoadOptions instanță — nu cea de bază LoadOptions — a fost transmisă la Document constructor. Doar subclasa expune proprietățile specifice formatului; transmiterea clasei de bază compilează, dar le elimină în tăcere.
Resursele externe nu sunt interceptate sau redirecționate. ResourceLoadingCallback trebuie să fie setat pe același LoadOptions obiectul transmis la Document constructor, și trebuie să fie atribuit înainte de apelul de încărcare. Atribuirea lui după ce încărcarea s-a finalizat nu are efect.
Un document malformat încă eșuează la încărcare după setare RecoveryMode. DocumentRecoveryMode.TryRecover permite încărcătorului să ocolească unele probleme structurale într-un document, dar o corupție mai gravă poate totuși să împiedice încărcarea cu succes a documentului.
Un document încărcat dintr-un Stream se comportă diferit față de același fișier încărcat prin cale. Verificați că poziția fluxului este la început înainte de a-l transmite către Document(stream) or Document(stream, loadOptions) — un flux lăsat la jumătatea conținutului încarcă doar octeții rămași.
Întrebări frecvente
Cum pot încărca un document fără nicio opțiune specială?
Transmite un path de fișier sau un Stream direct către Document(fileName) sau Document(stream) — LoadOptions este necesar doar când este nevoie de o parolă, setări specifice formatului sau un callback.
Care este diferența dintre LoadOptions, TxtLoadOptions și MarkdownLoadOptions?
TxtLoadOptions și MarkdownLoadOptions derivă ambele din LoadOptions și adaugă setări specifice surselor de text simplu, respectiv Markdown. Fiecare proprietate generală LoadOptions — parolă, codare, callbacks — rămâne disponibilă în oricare dintre subclase.
Pot să încarc un document direct dintr-un array de octeți?
Împachetează octeții într-un MemoryStream și trimite acel flux către Document(stream) sau Document(stream, loadOptions) — nu există niciun constructor care să accepte direct un array de octeți.
Cum pot controla ce se întâmplă când încărcătorul nu poate rezolva o resursă externă?
Implementează IResourceLoadingCallback și atribuie-l lui LoadOptions.ResourceLoadingCallback. Returnează ResourceLoadingAction.Skip din ResourceLoading(args) pentru a omite resursa în loc să lași încărcarea să eșueze.
Setarea RecoveryMode modifică modul în care se încarcă un document bine formatat?
Nu. DocumentRecoveryMode modifică comportamentul doar când încărcătorul întâlnește efectiv probleme structurale — un document bine format se încarcă în același mod, indiferent de setare.