DocumentViewer의 문서 맵 / 목차 및 XPS 문서의 이름 또는 링크 번호별로 하이퍼 링크 호출

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

문제

헤더 북마크가있는 XPS 파일이 있습니다.Word에서 소스 문서를 열고보기 -> 문서 맵으로 이동하면 왼쪽의 모든 북마크가 표시됩니다.일부 종류의 PDF 리더에서 PDF 문서와 같이 DocumentViewer에서 동일한 기능을 얻을 수 있습니까?

또한, requestNavigateEventHandler는 XPS 문서의 각 하이퍼 링크 / 책갈피가 "C : \ My Path \ to \ file.xps # pg_n_lnk_x"와 같은 특정 URI가 있음을 보여줍니다. 여기서 x는 링크를위한 고유 한 번호입니다.n은 페이지 번호입니다.나는 그 표제로 책갈피를 호출하는 방법을 알아 내고 싶습니다.예를 들어, XPS 파일 8 페이지에있는 "기본 화면"이라는 섹션이있는 경우 해당 북마크의 URI가 # PG_8_LNK_3과 같은 것을 종료 할 것입니다.책갈피 표제에서 URI를 얻을 수 있습니까?

도움이 되었습니까?

해결책

궁금 해 놓는 XPS 문서는 단순히 zip 파일입니다.ZIP를 추출하고 XML File \ Documents \ 1 \ Docstructure.struct를 구문 분석합니다.

다른 팁

보세요 :

지정된 북마크에서 XPS를 여는 방법

마지막 응답의 "getBookmarks"메소드는 xps 파일에서 북마크를 추출합니다.메소드 "GOTOBOKMARKElement"는 책갈피로 이동합니다.

frame.source 속성을 설정하여 책갈피를 탐색하는 더 빠른 방법을 수행 할 수 있습니다.

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

URI-constructor Look의 입력 문자열은 다음과 같습니다.

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

에있는 파일의 경우 :

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top