public static void ExportQuickReferenceAsBookmark(Annotation annotation, Document document) { KnowledgeItem quickReference = (KnowledgeItem)annotation.EntityLinks.Where(e => e.Indication == EntityLink.PdfKnowledgeItemIndication).FirstOrDefault().Source; string bookmarkTitle = quickReference.CoreStatement; pdftron.PDF.Bookmark bookmark = pdftron.PDF.Bookmark.Create(document, bookmarkTitle); Quad firstQuad = annotation.Quads.FirstOrDefault(); int page = firstQuad.PageIndex; double left = firstQuad.MinX; double top = firstQuad.MaxY; Destination destination = Destination.CreateXYZ(document.GetPage(page), left, top, 0); pdftron.PDF.Bookmark foo = document.GetFirstBookmark().Find(bookmarkTitle); if (foo.IsValid() && foo.GetAction().GetDest().GetPage().GetIndex() == page) { foo.SetAction(pdftron.PDF.Action.CreateGoto(destination)); return; } document.AddRootBookmark(bookmark); bookmark.SetAction(pdftron.PDF.Action.CreateGoto(destination)); }
public static void DeleteExtraBookmarks(List <KnowledgeItem> quickreferences, Document document) { pdftron.PDF.Bookmark bookmark = document.GetFirstBookmark(); bookmarks = new List <pdftron.PDF.Bookmark>(); while (bookmark.IsValid()) { AddBookmarkAndItsChildren(bookmark); bookmark = bookmark.GetNext(); if (!bookmark.IsValid()) { break; } } foreach (pdftron.PDF.Bookmark b in bookmarks) { // b.Delete(); if (quickreferences.Where ( q => String.Equals(q.CoreStatement, b.GetTitle(), StringComparison.OrdinalIgnoreCase) && ((Annotation)q.EntityLinks.Where(e => e.Indication == EntityLink.PdfKnowledgeItemIndication).FirstOrDefault().Target).Quads.FirstOrDefault().PageIndex == b.GetAction().GetDest().GetPage().GetIndex() ) .Count() == 1) { b.SetTitle((quickreferences.Where ( q => String.Equals(q.CoreStatement, b.GetTitle(), StringComparison.OrdinalIgnoreCase) && ((Annotation)q.EntityLinks.Where(e => e.Indication == EntityLink.PdfKnowledgeItemIndication).FirstOrDefault().Target).Quads.FirstOrDefault().PageIndex == b.GetAction().GetDest().GetPage().GetIndex() ) .FirstOrDefault().CoreStatement)); } else if (quickreferences.Where(q => q.CoreStatement == b.GetTitle() && ((Annotation)q.EntityLinks.Where(e => e.Indication == EntityLink.PdfKnowledgeItemIndication).FirstOrDefault().Target).Quads.FirstOrDefault().PageIndex == b.GetAction().GetDest().GetPage().GetIndex()).Count() == 0) { b.Delete(); } } }
public static void AddBookmarkAndItsChildren(pdftron.PDF.Bookmark bookmark) { if (!bookmark.IsValid()) { return; } bookmarks.Add(bookmark); List <pdftron.PDF.Bookmark> children = new List <pdftron.PDF.Bookmark>(); bookmark = bookmark.GetFirstChild(); while (bookmark.IsValid()) { children.Add(bookmark); bookmark = bookmark.GetNext(); } foreach (pdftron.PDF.Bookmark child in children) { AddBookmarkAndItsChildren(child); } }