Пример #1
0
        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));
        }
Пример #2
0
        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();
                }
            }
        }
Пример #3
0
        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);
            }
        }