Hur du arbetar med Word-länkar och referenser i .NET

Hur du arbetar med Word-länkar och referenser i .NET

Den här guiden visar hur man infogar hyperlänkar, korsreferenser till bokmärken, fält med efterfrågade värden och citeringsfält i Aspose.Words FOSS för .NET, med hjälp av FieldHyperlink, FieldRef, FieldPageRef, FieldCitation, och de andra länk- och referens Field subklasserna i Aspose.Words.Fields namnutrymmet. Den täcker infogning av en enkel hyperlänk, skapande av bokmärken och korsreferenser till dem, efterfrågan på värden under en fältuppdatering samt citering av bibliografikällor.

Steg-för-steg guide

Steg 1: Installera paketet

Aspose.Words FOSS för .NET publicerar ännu inte ett NuGet paket – bygg biblioteket från källkod istället. Klona https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git, bygg sedan Aspose.Words.sln i Release-konfiguration med .NET SDK och referera till den resulterande Aspose.Words-assemblyn från ditt projekt. Biblioteket riktar sig mot .NET Standard 2.0, så det körs på .NET Framework 4.6.2+ och .NET 6/8/10.


Steg 2: Importera nödvändiga klasser

Lägg till en using Aspose.Words;-direktiv för Document och DocumentBuilder, och ett using Aspose.Words.Fields;-direktiv för FieldHyperlink, FieldRef, FieldPageRef, FieldNoteRef, FieldStyleRef, FieldSet, FieldAsk, FieldFillIn, FieldCitation, FieldBibliography, samt de övriga fältklasserna som denna guide täcker.


Steg 3: Infoga en hyperlänk

För en enkel hyperlänk, anropa DocumentBuilder.InsertHyperlink(displayText, urlOrBookmark, isBookmark) – skicka isBookmark: false för ett URL-mål eller true för att länka till ett bokmärke i samma dokument. Gå ner till att konstruera en FieldHyperlink direkt när egenskaper som genvägen inte exponerar behövs: Address och SubAddress innehåller mål-URL-en eller platsen i dokumentet, ScreenTip anger verktygstipset som visas vid hovring, OpenInNewWindow och IsImageMap är visningsflaggor, och Target namnger en webbläsarram.


Steg 4: Skapa ett bokmärke för referens

Anropa DocumentBuilder.StartBookmark(bookmarkName) före innehållet som bokmärket ska omfatta, och DocumentBuilder.EndBookmark(bookmarkName) efter det, med samma namn för båda anropen. DocumentBuilder.MoveToBookmark(bookmarkName) flyttar markören till ett bokmärke som redan finns – användbart för att navigera till en plats innan ett korsreferensfält sätts in nära den.


Steg 5: Infoga en korsreferens till det bokmärket

FieldRef (fältet REF), FieldPageRef (PAGEREF) och FieldNoteRef (NOTEREF) löser alla upp till innehåll vid ett namngivet bokmärke via deras BookmarkName-egenskap. Ställ in InsertHyperlink för att göra referensen klickbar, och InsertRelativePosition för att rapportera en relativ position (“ovan” / “nedan”) istället för den refererade texten själv. FieldRef stödjer dessutom alternativ för stycke-numrering – InsertParagraphNumber, InsertParagraphNumberInFullContext, InsertParagraphNumberInRelativeContext, NumberSeparator – och IncludeNoteOrComment. FieldStyleRef (STYLEREF) löser upp till det närmaste stycket som är formaterat med ett givet StyleName istället för ett bokmärke, med SearchFromBottom för att söka bakåt från fältets position. FieldSet (SET) definierar ett bokmärkt textvärde – BookmarkName och BookmarkText – som ett REF-fält på annat håll kan lösa.


Steg 6: Fråga efter ett värde under en uppdatering

FieldAsk (ASK) och FieldFillIn (FILLIN) begär ett värde från den som uppdaterar fältet: sätt PromptText till den text som visas för användaren, DefaultResponse för ett reservvärde, och PromptOnceOnMailMerge för att begränsa upprepade uppmaningar under en kopplad utskrift. FieldAsk lagrar dessutom sitt svar på BookmarkName så att andra fält kan referera till det. För oövervakade fältuppdateringar, tillhandahåll svar programatiskt istället för att uppmana interaktivt; se fältguide för callback-gränssnittet som gör detta.


Steg 7: Referera till externt eller länkat innehåll

FieldDde (DDE) och FieldDdeAuto (DDEAUTO) länkar till innehåll i en annan applikation via ProgId, SourceFullName och SourceItem, med InsertAsText, InsertAsHtml, InsertAsPicture, InsertAsRtf, InsertAsUnicode och InsertAsBitmap som väljer den infogade representationen, och AutoUpdate / IsLinked som styr uppdateringsbeteendet. FieldLink (LINK) är motsvarigheten till OLE-länk och lägger till FormatUpdateType. FieldImport (IMPORT) och FieldIncludePicture (INCLUDEPICTURE) hämtar in en extern grafik via SourceFullName och GraphicFilter. FieldInclude (INCLUDE) och FieldIncludeText (INCLUDETEXT) hämtar in externt dokumentinnehåll, med BookmarkName för att avgränsa det inkluderade intervallet och LockFields för att förhindra att det uppdateras; FieldIncludeText stöder dessutom XML-källor via Encoding, MimeType, NamespaceMappings, XPath och XslTransformation.


Steg 8: Referera till byggblock och glossariposter

FieldAutoText (AUTOTEXT), FieldAutoTextList (AUTOTEXTLIST) och FieldGlossary (GLOSSARY) refererar alla till en namngiven byggblockspost via EntryName; FieldAutoTextList lägger till ListStyle och ScreenTip för dess liststilspresentation.


Steg 9: Infoga citerings- och bibliografifält

FieldCitation (CITATION) och FieldBibliography (BIBLIOGRAPHY) rendera innehåll hämtat från dokumentets bibliografidata. Ställ in FieldCitation.SourceTag (eller det alternativa AnotherSourceTag) för att identifiera vilken källa den citerar, och använda Prefix, Suffix, PageNumber, VolumeNumber, och Suppress* flaggor (SuppressAuthor, SuppressTitle, SuppressYear) för att kontrollera hur citatet formateras. FieldBibliography.SourceTag, FilterLanguageId, och FormatLanguageId kontrollera vilka källor som visas i den renderade bibliografin och på vilket språk. Dessa fält renderas korrekt först när den matchande Source poster finns – se bibliografiguide för att bygga dem.

Vanliga problem och lösningar

REF-, PAGEREF- eller NOTEREF-fält visar ett felresultat Den BookmarkName det den pekar på finns inte i dokumentet. Skapa bokmärket med DocumentBuilder.StartBookmark() / EndBookmark() innan fältet uppdateras.

ASK- eller FILLIN-fält hindrar en oövervakad uppdatering Ingen återuppringning har tilldelats för att leverera ett svar programatiskt. Tilldela återuppringningsfunktionen för fältuppdatering som beskrivs i the fältguide, eller sätt DefaultResponse på fältet så att det har ett reservvärde.

CITATION- eller BIBLIOGRAPHY-fältet renderas tomt Den SourceTag matchar inte någon Source i dokumentets bibliografidata. Lägg till den matchande Source – se bibliografiguide.

DDE, DDEAUTO eller LINK-fältet uppdateras inte Dessa fält refererar till en extern OLE-källa som inte är tillgänglig utanför den ursprungliga Windows/OLE kontexten. Behandla fältets lagrade resultat som det senast kända värdet i den situationen.

En hyperlänk infogad med InsertHyperlink saknar en egenskap jag behöver DocumentBuilder.InsertHyperlink() är en genväg som inte visar varje FieldHyperlink egenskap. Konstruera eller hämta den FieldHyperlink direkt för att ställa in egenskaper såsom ScreenTip or IsImageMap.

Vanliga frågor

Vad är skillnaden mellan FieldRef och FieldStyleRef?

FieldRef löser upp till innehåll vid ett namngivet bokmärke (BookmarkName); FieldStyleRef löser däremot upp till det närmaste stycket formaterat med en given StyleName, oberoende av bokmärken.

Hur infogar jag en enkel hyperlänk utan att bygga ett Field för hand?

Anropa DocumentBuilder.InsertHyperlink(displayText, urlOrBookmark, isBookmark).

Är dessa link- och reference field-klasser i ett separat namnrymd från andra field?

Nej – FieldHyperlink, FieldRef, FieldCitation, och resten av klasserna som behandlas här är vanliga Field subklasser i Aspose.Words.Fields namnrymden, samma namnrymd som används för alla andra field-typer.

Hur relaterar citation fields till bibliography data model?

FieldCitation and FieldBibliography rendera innehåll genom att slå upp SourceTag mot Source poster som beskrivs i bibliografiguide – dessa fältklasser hanterar rendering, medan Source and Contributor klasser innehåller den underliggande datan.

Hur skapar jag ett bokmärke innan jag refererar till det?

Anropa DocumentBuilder.StartBookmark(bookmarkName) före innehållet, och DocumentBuilder.EndBookmark(bookmarkName) efter det, med samma namn för båda anropen.

Se även

 Svenska