Навигация и действия
Навигация и действия
Aspose.PDF FOSS for .NET поддерживает структуры навигации PDF — закладки (outlines), назначения страниц и действия документа. Это позволяет создавать интерактивные документы с навигацией по оглавлению, межстраничными ссылками и триггерами JavaScript.
Оглавления документа (закладки)
OutlineCollection содержит дерево закладок документа. Каждый OutlineItemCollection представляет собой запись закладки с заголовком и местом назначения.
using var doc = Document.Open(pdfBytes);
foreach (var item in doc.Outlines)
{
Console.WriteLine($"Bookmark: {item.Title}");
}Создание закладок
using var doc = Document.Open(pdfBytes);
var bookmark = new OutlineItemCollection(doc.Outlines);
bookmark.Title = "Chapter 1";
bookmark.Action = new GoToAction(doc.Pages[1]);
doc.Outlines.Add(bookmark);
doc.Save("with-bookmarks.pdf");Действия GoTo
GoToAction переходит к конкретной странице и типу подгонки в том же документе.
var goTo = new GoToAction(doc.Pages[3]);Именованные действия
NamedAction вызывает предопределённые команды просмотрщика PDF, такие как NextPage, PrevPage, FirstPage и LastPage.
var nextPage = PdfAction.CreateNamed("NextPage");Действия GoToRemote
GoToRemoteAction открывает внешний PDF‑файл и переходит к определённой странице.
var remote = new GoToRemoteAction("other.pdf", 1);Запуск действий
LaunchAction открывает внешний файл (любой формат) из ссылки PDF.
var launch = new LaunchAction("readme.txt");Коллекции назначения
DestinationCollection сопоставляет именованные назначения со страницами, поддерживая навигацию по перекрестным ссылкам в больших документах.
var dest = doc.Destinations;
int pageNum = dest.GetPageNumber("section2");Советы и лучшие практики
- Постройте дерево закладок, отражающее иерархию разделов вашего документа, для удобной навигации.
- Используйте
GoToActionсFitTypeдля управления отображением целевой страницы (подгонка по ширине, подгонка по странице и т.д.). - Именованные действия зависят от просмотрщика — используйте только стандартные имена (NextPage, PrevPage, FirstPage, LastPage).
- Для ссылок между документами используйте
GoToRemoteActionвместо URI‑действий, указывающих на файлы PDF. - Коллекции действий на странице позволяют добавить несколько действий, которые выполняются при открытии страницы.
Общие проблемы
| Проблема | Причина | Решение |
|---|---|---|
| Закладка не переходит | Действие не установлено для элемента оглавления | Назначить GoToAction для OutlineItemCollection.Action |
| Действие GoTo указывает на неправильную страницу | Индекс страницы внутренне начинается с 0, а страницы нумеруются с 1 | Использовать doc.Pages[n] напрямую в конструкторе GoToAction |
| Именованное действие не оказывает эффекта | Просмотрщик не поддерживает именованное действие | Использовать только стандартные имена |
Часто задаваемые вопросы
Как создать оглавление?
Создайте OutlineItemCollection записи для каждого раздела, каждая сGoToAction, направленной на первую страницу раздела.
Можно ли создавать вложенные закладки?
Да. Добавьте дочерние OutlineItemCollection записи в родительскую закладку, чтобы создать иерархический план.
Какие типы подгонки доступны для действий GoTo?
Fit, FitH (подгонка по ширине), FitV (подгонка по высоте), FitR (подгонка по прямоугольнику), и FitB (подгонка по ограничивающему прямоугольнику).
Сводка справки API
| Class / Method | Description |
|---|---|
OutlineCollection | Коллекция закладок верхнего уровня в документе |
OutlineItemCollection | Отдельный элемент закладки с заголовком и действием |
GoToAction | Переход к странице в том же документе |
GoToRemoteAction | Переход к странице во внешнем PDF |
LaunchAction | Открытие внешнего файла |
NamedAction | Вызов предопределённой команды просмотрщика |
PdfAction.CreateGoTo | Фабрика действий GoTo |
PdfAction.CreateNamed | Фабрика именованных действий |
ActionCollection | Коллекция действий на странице или аннотации |
DestinationCollection | Реестр именованных назначений |
ActionType | Перечисление: GoTo, URI, JavaScript, Named, Launch |