DocumentMap / Содержание для DocumentViewer и вызова гиперссылки по имени или номеру ссылки для документов XPS

StackOverflow https://stackoverflow.com/questions/3293856

Вопрос

У меня есть файлы XPS с закладки заголовка.Если вы открываете исходный документ в Word и перейдите к просмотру-> Карта документов, вы видите все закладки слева.Можно ли получить эту же функциональность в DocumentViewer, как будто вы получите с документом PDF в каком-то читателе PDF?

Кроме того, запроснавистеВЕНДДНЕРАЙЛЕР показывает, что каждая гиперссылка / закладка в документе XPS имеет определенный URI, который является чем-то вроде «C: \ my path \ to \ file.xps # pg_n_lnk_x», где X - это уникальный номер для ссылки иN - номер страницы.Я хотел бы понять способ назвать закладку по его заголовке.Например, если бы у меня был раздел под названием «Главный экран», который был на странице 8 файла XPS, URI для этой закладки закончится что-то вроде # PG_8_LNK_3.Можно ли мне получить этот URI из заголовка закладок?

Это было полезно?

Решение

Для тех, кто задается вопросом, документы XPS просто zip-файлы.Извлеките ZIP и анализировать XML-файл \ Documents \ 1 \ DocStructure.struct для наброски.

Другие советы

Посмотрите:

Как открыть XPS в указанных закладках

Метод «GetBookmarks» в последнем ответе извлекает закладки из XPS-файла.Метод «Gotobookmarkelement» навигации на закладки.

Быстрее способ навигации к закладке можно сделать, установив свойство кадра. Насудите имущество:

DocFrame.Source = new Uri(string.Format("pack://file:,,,{0}/FixedDocSeq.fdseq#{1}", _filePath.Replace('\\', ','), bookmark.Name));
.

Входная строка для УРИ-конструктора выглядит как:

"pack://file:,,,C:,temp,Help,Manual.xps/FixedDocSeq.fdseq#PG_6_LNK_380"
.

для файла, который находится в:

"C:\\temp\\Help\\Manual.xps"
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top