Як працювати з посиланнями та посиланнями Word у .NET

Як працювати з посиланнями та посиланнями Word у .NET

Цей посібник показує, як вставляти гіперпосилання, перехресні посилання на закладки, поля зі значеннями за запитом та поля цитувань у Aspose.Words FOSS для .NET, використовуючи FieldHyperlink, FieldRef, FieldPageRef, FieldCitation, а також інші підкласи посилань і посилань Field підкласів у Aspose.Words.Fields простір імен. У ньому розглядається вставка простого гіперпосилання, створення закладок і їх перехресне посилання, запит значень під час оновлення поля та цитування джерел бібліографії.

Покроковий посібник

Крок 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 у вашому проєкті. Бібліотека орієнтована на .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 встановлює підказку при наведенні, 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) запитує значення у того, хто оновлює поле: встановити 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 – дивіться the посібник з бібліографії.

Поле 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 field знаходяться в окремому просторі імен від інших полів?

Ні – FieldHyperlink, FieldRef, FieldCitation та інші класи, розглянуті тут, є звичайними підкласами Field у просторі імен Aspose.Words.Fields, тому ж просторі імен, який використовується для будь-якого іншого типу полів.

Як поля citation пов’язані з моделлю даних бібліографії?

FieldCitation and FieldBibliography відображає вміст, шукаючи SourceTag проти Source записами, описаними у керівництво з бібліографії – ці класи полів обробляють рендеринг, тоді як Source and Contributor класи містять базові дані.

Як створити закладку перед її використанням?

Викличте DocumentBuilder.StartBookmark(bookmarkName) перед вмістом і DocumentBuilder.EndBookmark(bookmarkName) після нього, використовуючи одне й те саме ім’я для обох викликів.

Дивіться також

 Українська