Πώς να δουλέψετε με συνδέσμους και αναφορές Word στο .NET
Αυτός ο οδηγός δείχνει πώς να εισάγετε υπερσυνδέσμους, διασταυρούμενες αναφορές σε σελιδοδείκτες, πεδία με προτροπή τιμής και πεδία παραπομπής σε Aspose.Words FOSS for .NET, χρησιμοποιώντας FieldHyperlink, FieldRef, FieldPageRef, FieldCitation, και τα άλλα link και reference Field υποκατηγορίες στο Aspose.Words.Fields namespace. Καλύπτει την εισαγωγή ενός απλού hyperlink, τη δημιουργία σελιδοδεικτών και τη διασταυρούμενη αναφορά τους, την προτροπή για τιμές κατά την ενημέρωση ενός πεδίου, και την παραπομπή σε πηγές βιβλιογραφίας.
Οδηγός βήμα-βήμα
Βήμα 1: Εγκατάσταση του πακέτου
Aspose.Words FOSS for .NET δεν δημοσιεύει ακόμη ένα πακέτο NuGet – κατασκευάστε τη βιβλιοθήκη από τον πηγαίο κώδικα αντ’ αυτού. Κλωνοποιήστε το https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git, στη συνέχεια κατασκευάστε το Aspose.Words.sln σε διαμόρφωση Release με το SDK .NET και αναφερθείτε στο προκύπτον Aspose.Words assembly από το έργο σας. Η βιβλιοθήκη στοχεύει στο .NET Standard 2.0, έτσι τρέχει στο .NET Framework 4.6.2+ και .NET 6/8/10.
Βήμα 2: Εισαγωγή των απαιτούμενων κλάσεων
Προσθέστε μια οδηγία using Aspose.Words; για τα Document και DocumentBuilder, και μια οδηγία using Aspose.Words.Fields; για τα FieldHyperlink, FieldRef, FieldPageRef, FieldNoteRef, FieldStyleRef, FieldSet, FieldAsk, FieldFillIn, FieldCitation, FieldBibliography, καθώς και για τις άλλες κλάσεις πεδίων που καλύπτει αυτός ο οδηγός.
Βήμα 3: Εισαγωγή υπερσυνδέσμου
Για έναν απλό υπερσύνδεσμο, καλέστε DocumentBuilder.InsertHyperlink(displayText, urlOrBookmark, isBookmark) — περάστε το isBookmark: false για στόχο URL ή το true για σύνδεση σε σελιδοδείκτη στο ίδιο έγγραφο. Μεταβείτε στη δημιουργία ενός FieldHyperlink απευθείας όταν χρειάζονται ιδιότητες που δεν εκτίθενται από τη συντόμευση: τα Address και SubAddress περιέχουν το URL προορισμού ή τη θέση εντός του εγγράφου, το ScreenTip ορίζει το tooltip κατά το πέρασμα του ποντικιού, τα OpenInNewWindow και IsImageMap είναι σημαίες εμφάνισης, και το Target ονομάζει ένα πλαίσιο προγράμματος περιήγησης.
Βήμα 4: Δημιουργία σελιδοδείκτη για αναφορά
Καλέστε το DocumentBuilder.StartBookmark(bookmarkName) πριν από το περιεχόμενο που πρέπει να καλύπτει ο σελιδοδείκτης και το DocumentBuilder.EndBookmark(bookmarkName) μετά από αυτό, χρησιμοποιώντας το ίδιο όνομα και για τις δύο κλήσεις. Το DocumentBuilder.MoveToBookmark(bookmarkName) μετακινεί τον κέρσορα σε έναν σελιδοδείκτη που υπάρχει ήδη — χρήσιμο για πλοήγηση σε θέση πριν την εισαγωγή ενός πεδίου διασύνδεσης κοντά του.
Βήμα 5: Εισαγωγή διασύνδεσης σε αυτόν τον σελιδοδείκτη
FieldRef (το πεδίο REF), FieldPageRef (PAGEREF) και FieldNoteRef (NOTEREF) καθένα αναφέρεται στο περιεχόμενο ενός ονομασμένου σελιδοδείκτη μέσω της ιδιότητας BookmarkName. Ορίστε το InsertHyperlink για να κάνετε τη αναφορά κλικ-δυνατή, και το InsertRelativePosition για να αναφέρει σχετική θέση («παραπάνω» / «κάτω») αντί για το ίδιο το κείμενο που αναφέρεται. Το FieldRef υποστηρίζει επιπλέον επιλογές αρίθμησης παραγράφων — InsertParagraphNumber, InsertParagraphNumberInFullContext, InsertParagraphNumberInRelativeContext, NumberSeparator — και το IncludeNoteOrComment. Το FieldStyleRef (STYLEREF) αναφέρεται στην πιο κοντινή παράγραφο μορφοποιημένη με ένα δεδομένο StyleName αντί για σελιδοδείκτη, με το SearchFromBottom για αναζήτηση προς τα πίσω από τη θέση του πεδίου. Το FieldSet (SET) ορίζει μια τιμή κειμένου σελιδοδείκτη — BookmarkName και BookmarkText — που ένα πεδίο REF αλλού μπορεί να ανακτήσει.
Βήμα 6: Πρόσκληση για τιμή κατά την ενημέρωση
FieldAsk (ASK) και FieldFillIn (FILLIN) ζητά μια τιμή από όποιον ενημερώνει το πεδίο: set PromptText στο κείμενο που εμφανίζεται στον χρήστη, DefaultResponse για εναλλακτική τιμή, και PromptOnceOnMailMerge για να περιορίσετε τις επαναλαμβανόμενες προτροπές κατά τη διάρκεια συγχώνευσης αλληλογραφίας. FieldAsk επιπλέον αποθηκεύει την απάντησή του στο BookmarkName ώστε άλλα πεδία να το αναφέρουν. Για αυτόματες ενημερώσεις πεδίων, παρέχετε απαντήσεις προγραμματιστικά αντί για διαδραστική προτροπή· δείτε το οδηγός πεδίων για τη διεπαφή επανάκλησης που το υλοποιεί.
Βήμα 7: Αναφορά σε εξωτερικό ή συνδεδεμένο περιεχόμενο
FieldDde (DDE) και FieldDdeAuto (DDEAUTO) συνδέονται σε περιεχόμενο σε άλλη εφαρμογή μέσω ProgId, SourceFullName και SourceItem, με τα InsertAsText, InsertAsHtml, InsertAsPicture, InsertAsRtf, InsertAsUnicode και InsertAsBitmap να επιλέγουν την εισαχθείσα αναπαράσταση, και τα AutoUpdate / IsLinked να ελέγχουν τη συμπεριφορά ενημέρωσης. Το FieldLink (LINK) είναι το ισοδύναμο OLE-link, προσθέτοντας FormatUpdateType. Τα FieldImport (IMPORT) και FieldIncludePicture (INCLUDEPICTURE) εισάγουν ένα εξωτερικό γραφικό μέσω SourceFullName και GraphicFilter. Τα FieldInclude (INCLUDE) και FieldIncludeText (INCLUDETEXT) εισάγουν εξωτερικό περιεχόμενο εγγράφου, με το BookmarkName για να καθορίσει το εύρος της περιληφθείσας περιοχής και το LockFields για να αποτρέψει την ενημέρωσή του· το FieldIncludeText υποστηρίζει επιπλέον πηγές XML μέσω Encoding, MimeType, NamespaceMappings, XPath και XslTransformation.
Βήμα 8: Αναφορά σε μπλοκ κατασκευής και καταχωρήσεις γλωσσολογίου
FieldAutoText (AUTOTEXT), FieldAutoTextList (AUTOTEXTLIST) και FieldGlossary (GLOSSARY) αναφέρονται όλα σε μια ονομαστική καταχώριση μπλοκ-κατασκευής μέσω EntryName; το FieldAutoTextList προσθέτει ListStyle και ScreenTip για την παρουσίαση του σε στυλ λίστας.
Βήμα 9: Εισαγωγή πεδίων παραπομπής και βιβλιογραφίας
FieldCitation (CITATION) και FieldBibliography (BIBLIOGRAPHY) αποδίδει περιεχόμενο που προέρχεται από τα δεδομένα βιβλιογραφίας του εγγράφου. Ορίστε FieldCitation.SourceTag (ή το εναλλακτικό AnotherSourceTag) για να προσδιορίσει ποια πηγή παραθέτει, και να χρησιμοποιήσει Prefix, Suffix, PageNumber, VolumeNumber, και το Suppress* σημαίες (SuppressAuthor, SuppressTitle, SuppressYear) για να ελέγξει πώς μορφοποιείται η παραπομπή. FieldBibliography.SourceTag, FilterLanguageId, και FormatLanguageId ελέγχει ποιες πηγές εμφανίζονται στην αποδοθείσα βιβλιογραφία και σε ποια γλώσσα. Αυτά τα πεδία αποδίδονται σωστά μόνο όταν ταιριάζει το Source υπάρχουν εγγραφές – δείτε το οδηγό βιβλιογραφίας για τη δημιουργία τους.
Κοινά προβλήματα και διορθώσεις
Το πεδίο REF, PAGEREF ή NOTEREF εμφανίζει αποτέλεσμα σφάλματος Το BookmarkName ο προορισμός του δεν υπάρχει στο έγγραφο. Δημιουργήστε το σελιδοδείκτη με DocumentBuilder.StartBookmark() / EndBookmark() πριν ενημερώσετε το πεδίο.
Το πεδίο ASK ή FILLIN εμποδίζει μια αυτόματη ενημέρωση Δεν έχει εκχωρηθεί καμία κλήση επανάκλησης για την παροχή απάντησης προγραμματιστικά. Αναθέστε την κλήση επανάκλησης ενημέρωσης πεδίου που περιγράφεται στο οδηγό πεδίων, ή ορίστε DefaultResponse στο πεδίο ώστε να έχει εναλλακτική τιμή.
CITATION ή BIBLIOGRAPHY πεδίο εμφανίζει κενό Το SourceTag δεν ταιριάζει με κανένα Source στα δεδομένα βιβλιογραφίας του εγγράφου. Προσθέστε το αντίστοιχο Source – δείτε το οδηγός βιβλιογραφίας.
Το πεδίο DDE, DDEAUTO ή LINK δεν ανανεώνεται Αυτά τα πεδία αναφέρονται σε εξωτερική πηγή OLE που δεν είναι διαθέσιμη εκτός του αρχικού πλαισίου Windows/OLE. Θεωρήστε το αποθηκευμένο αποτέλεσμα του πεδίου ως την τελευταία γνωστή τιμή σε αυτήν την κατάσταση.
Ένας υπερσύνδεσμος που έχει εισαχθεί με InsertHyperlink λείπει μια ιδιότητα που χρειάζομαι DocumentBuilder.InsertHyperlink() είναι μια συντόμευση που δεν εκθέτει κάθε FieldHyperlink ιδιότητα. Δημιουργήστε ή ανακτήστε το FieldHyperlink απευθείας για να ορίσετε ιδιότητες όπως ScreenTip or IsImageMap.
Συχνές Ερωτήσεις
Ποια είναι η διαφορά μεταξύ FieldRef και FieldStyleRef;
FieldRef επιλύεται σε περιεχόμενο σε έναν ονομασμένο σελιδοδείκτη (BookmarkName); το FieldStyleRef αντίθετα επιλύεται στο πλησιέστερο παράγραφο μορφοποιημένο με ένα δεδομένο StyleName, ανεξάρτητα από σελιδοδείκτες.
Πώς μπορώ να εισάγω έναν απλό υπερσύνδεσμο χωρίς να δημιουργήσω ένα Field με το χέρι;
Καλέστε DocumentBuilder.InsertHyperlink(displayText, urlOrBookmark, isBookmark).
Βρίσκονται αυτές οι κλάσεις πεδίων link και reference σε ξεχωριστό χώρο ονομάτων από άλλα πεδία;
Όχι – FieldHyperlink, FieldRef, FieldCitation και οι υπόλοιπες κλάσεις που καλύπτονται εδώ είναι συνηθισμένα υποκλάσεις Field στον χώρο ονομάτων Aspose.Words.Fields, τον ίδιο χώρο ονομάτων που χρησιμοποιείται για κάθε άλλο τύπο πεδίου.
Πώς σχετίζονται τα πεδία παραπομπής με το μοντέλο δεδομένων της βιβλιογραφίας;
FieldCitation and FieldBibliography απόδοση περιεχομένου με αναζήτηση SourceTag εναντίον του Source εγγραφές που περιγράφονται στο οδηγός βιβλιογραφίας – αυτές οι κλάσεις πεδίου διαχειρίζονται την απόδοση, ενώ οι Source and Contributor κλάσεις περιέχουν τα υποκείμενα δεδομένα.
Πώς δημιουργώ ένα σελιδοδείκτη πριν τον αναφέρω;
Καλέστε DocumentBuilder.StartBookmark(bookmarkName) πριν από το περιεχόμενο και DocumentBuilder.EndBookmark(bookmarkName) μετά από αυτό, χρησιμοποιώντας το ίδιο όνομα και για τις δύο κλήσεις.