Cum să lucrați cu legăturile și referințele Word în .NET
Acest ghid arată cum să inserați hyperlinkuri, referințe încrucișate la marcaje, câmpuri cu valori solicitate și câmpuri de citare în Aspose.Words FOSS pentru .NET, utilizând FieldHyperlink, FieldRef, FieldPageRef, FieldCitation, și celelalte linkuri și referințe Field subclase în Aspose.Words.Fields namespace. Acoperă inserarea unui hyperlink simplu, crearea de marcaje și referențierea încrucișată a acestora, solicitarea de valori în timpul actualizării unui câmp și citarea surselor bibliografice.
Ghid pas cu pas
Pasul 1: Instalați pachetul
Aspose.Words FOSS pentru .NET nu publică încă un pachet NuGet – construiți biblioteca din sursă în schimb. Clonați https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git, apoi construiți Aspose.Words.sln în configurația Release cu SDK-ul .NET și faceți referire la ansamblul Aspose.Words rezultat din proiectul dumneavoastră. Biblioteca vizează .NET Standard 2.0, astfel că rulează pe .NET Framework 4.6.2+ și .NET 6/8/10.
Pasul 2: Importați clasele necesare
Adăugați o directivă using Aspose.Words; pentru Document și DocumentBuilder, și o directivă using Aspose.Words.Fields; pentru FieldHyperlink, FieldRef, FieldPageRef, FieldNoteRef, FieldStyleRef, FieldSet, FieldAsk, FieldFillIn, FieldCitation, FieldBibliography, și celelalte clase de câmpuri pe care le acoperă acest ghid.
Pasul 3: Inserează un hyperlink
Pentru un hyperlink simplu, apelează DocumentBuilder.InsertHyperlink(displayText, urlOrBookmark, isBookmark) – transmite isBookmark: false pentru o destinație URL sau true pentru a crea un link către un semn de carte în același document. Treci la construirea unui FieldHyperlink direct când sunt necesare proprietăți pe care scurtătura nu le expune: Address și SubAddress conțin URL-ul țintă sau locația din document, ScreenTip setează indiciul la trecere a mouse-ului, OpenInNewWindow și IsImageMap sunt semnalizatoare de afișare, iar Target denumește un cadru de browser.
Pasul 4: Creează un semn de carte pentru referință
Apelează DocumentBuilder.StartBookmark(bookmarkName) înainte de conținutul pe care semnul de carte ar trebui să îl acopere și DocumentBuilder.EndBookmark(bookmarkName) după el, utilizând același nume pentru ambele apeluri. DocumentBuilder.MoveToBookmark(bookmarkName) mută cursorul la un semn de carte care există deja – util pentru navigarea la o locație înainte de a insera un câmp de referință încrucișată lângă el.
Pasul 5: Inserează o referință încrucișată la acel semn de carte
FieldRef (câmpul REF), FieldPageRef (PAGEREF) și FieldNoteRef (NOTEREF) rezolvă fiecare la conținutul unui semn de carte numit prin proprietatea lor BookmarkName. Setează InsertHyperlink pentru a face referința clicabilă și InsertRelativePosition pentru a raporta o poziție relativă („deasupra” / „dedesubt”) în locul textului referențiat. FieldRef suportă, de asemenea, opțiuni de numerotare a paragrafelor – InsertParagraphNumber, InsertParagraphNumberInFullContext, InsertParagraphNumberInRelativeContext, NumberSeparator – și IncludeNoteOrComment. FieldStyleRef (STYLEREF) rezolvă la cel mai apropiat paragraf formatat cu un StyleName dat în loc de un semn de carte, cu SearchFromBottom pentru a căuta înapoi de la poziția câmpului. FieldSet (SET) definește o valoare de text semn de carte – BookmarkName și BookmarkText – pe care un câmp REF din altă parte îl poate rezolva.
Pasul 6: Solicită o valoare în timpul unei actualizări
FieldAsk (ASK) și FieldFillIn (FILLIN) solicită o valoare de la oricine actualizează câmpul: set PromptText la textul afișat utilizatorului, DefaultResponse pentru o valoare de rezervă, și PromptOnceOnMailMerge pentru a limita solicitările repetate în timpul unui mail merge. FieldAsk de asemenea stochează răspunsul său la BookmarkName pentru ca alte câmpuri să îl poată referenția. Pentru actualizări de câmpuri fără supraveghere, furnizați răspunsuri programatic, în loc să solicitați interactiv; consultați ghidul de câmpuri pentru interfața de apel invers care face acest lucru.
Pasul 7: Referențierea conținutului extern sau legat
FieldDde (DDE) și FieldDdeAuto (DDEAUTO) creează legături către conținut într-o altă aplicație prin ProgId, SourceFullName și SourceItem, cu InsertAsText, InsertAsHtml, InsertAsPicture, InsertAsRtf, InsertAsUnicode și InsertAsBitmap care selectează reprezentarea inserată, și AutoUpdate / IsLinked care controlează comportamentul de reîmprospătare. FieldLink (LINK) este echivalentul OLE-link, adăugând FormatUpdateType. FieldImport (IMPORT) și FieldIncludePicture (INCLUDEPICTURE) încarcă o grafică externă prin SourceFullName și GraphicFilter. FieldInclude (INCLUDE) și FieldIncludeText (INCLUDETEXT) încarcă conținut de document extern, cu BookmarkName pentru a defini domeniul intervalului inclus și LockFields pentru a preveni reîmprospătarea acestuia; FieldIncludeText suportă în plus surse XML prin Encoding, MimeType, NamespaceMappings, XPath și XslTransformation.
Pasul 8: Referențierea blocurilor de construcție și a intrărilor din glosar
FieldAutoText (AUTOTEXT), FieldAutoTextList (AUTOTEXTLIST) și FieldGlossary (GLOSSARY) toate referențiază o intrare de bloc de construcție numită prin EntryName; FieldAutoTextList adaugă ListStyle și ScreenTip pentru prezentarea în stil listă.
Pasul 9: Inserarea câmpurilor de citare și bibliografie
FieldCitation (CITATION) și FieldBibliography (BIBLIOGRAPHY) redă conținut preluat din datele bibliografice ale documentului. Setează FieldCitation.SourceTag (sau alternativa AnotherSourceTag) pentru a identifica sursa citată și a folosi Prefix, Suffix, PageNumber, VolumeNumber, și Suppress* flaguri (SuppressAuthor, SuppressTitle, SuppressYear) pentru a controla modul în care este formatată citarea. FieldBibliography.SourceTag, FilterLanguageId, și FormatLanguageId controlează ce surse apar în bibliografia redată și în ce limbă. Aceste câmpuri redau corect numai după ce se potrivește Source înregistrările există – vezi ghidul de bibliografie pentru a le construi.
Probleme comune și remedieri
câmpul REF, PAGEREF sau NOTEREF afișează un rezultat de eroare Câmpul BookmarkName ținta nu există în document. Creează marcajul cu DocumentBuilder.StartBookmark() / EndBookmark() înainte de a actualiza câmpul.
câmpul ASK sau FILLIN blochează o actualizare neasistată Nu este atribuit niciun callback pentru a furniza un răspuns programatic. Atribuiți callback-ul de actualizare a câmpului descris în ghidul câmpurilor, sau setați DefaultResponse pe câmp, astfel încât să aibă o valoare de rezervă.
Câmpul CITATION sau BIBLIOGRAPHY se redă gol Acesta SourceTag nu corespunde niciunui Source în datele bibliografice ale documentului. Adăugați elementul corespunzător Source – vezi ghid de bibliografie.
Câmpul DDE, DDEAUTO sau LINK nu se reîncarcă Aceste câmpuri fac referire la o sursă OLE externă care nu este disponibilă în afara contextului original Windows/OLE. Tratați rezultatul stocat al câmpului ca pe ultima valoare cunoscută în acea situație.
Un hyperlink inserat cu InsertHyperlink îi lipsește o proprietate de care am nevoie DocumentBuilder.InsertHyperlink() este o scurtătură care nu expune fiecare FieldHyperlink proprietate. Construiți sau recuperați FieldHyperlink direct pentru a seta proprietăți precum ScreenTip or IsImageMap.
Întrebări frecvente
Care este diferența dintre FieldRef și FieldStyleRef?
FieldRef se rezolvă la conținutul unui marcaj numit (BookmarkName); FieldStyleRef în schimb se rezolvă la cel mai apropiat paragraf formatat cu un anumit StyleName, independent de marcaje.
Cum pot insera un hyperlink simplu fără a construi un câmp manual?
Apelă DocumentBuilder.InsertHyperlink(displayText, urlOrBookmark, isBookmark).
Aceste clase de câmp link și referință sunt într-un spațiu de nume separat față de celelalte câmpuri?
Nu – FieldHyperlink, FieldRef, FieldCitation, și restul claselor prezentate aici sunt subclase obișnuite Field în spațiul de nume Aspose.Words.Fields, același spațiu de nume utilizat pentru fiecare alt tip de câmp.
Cum se raportează câmpurile de citare la modelul de date al bibliografiei?
FieldCitation and FieldBibliography redă conținutul prin căutare SourceTag împotriva Source înregistrările descrise în ghidul de bibliografie – aceste clase de câmp gestionează randarea, în timp ce Source and Contributor clasele dețin datele subiacente.
Cum creez un marcaj înainte de a-l referenția?
Apelă DocumentBuilder.StartBookmark(bookmarkName) înainte de conținut și DocumentBuilder.EndBookmark(bookmarkName) după acesta, utilizând același nume pentru ambele apeluri.