簡體   English   中英

使用Javascript從瀏覽器訪問PDF書簽

[英]Access PDF Bookmarks from Browser with Javascript

好,這是獨家新聞 我從郵局收到了幾乎完全鎖定的(僅查看)PDF。 我必須創建一個Web應用程序,用戶可以在其中鍵入書簽名稱,該書簽名稱將在PDF中顯示正確的頁面。 我知道沒有辦法以編程方式跳轉到特定書簽。 文檔中沒有命名的目的地,也沒有創建目的地的方法。 是否可以通過JavaScript以編程方式從PDF文檔中的書簽中提取頁碼? 我可以循環瀏覽書簽以找到正確的書簽並閱讀頁碼嗎? 為什么這要這么難?

我的公司Atalasoft制作了一個Ajax / asp.net控件 ,該控件具有執行所需功能的能力。 它可以讓您顯示PDF,並在服務器端,拔出書簽和目標並將它們發送到客戶端控件並不難。

本質上,您將用基於圖像的查看器替換Acrobat(或其他)查​​看器,該查看器在服務器端已經剖析了PDF,並可以告訴查看器去向。

這是一些用於提取書簽的示例代碼-此代碼看起來比您想象的要復雜,這是因為PDF中的書簽是一棵完整的樹。

delegate void BookmarkReceiver(PdfBookmark bookmark);

public void VisitBookmarks(PdfBookmarkList bookmarks, BookmarkReceiver receiever)
{
    foreach (PdfBookmark mark in bookmarks)
    {
        receiver(mark);
        VisitBookmarks(mark.Children);
    }
}

// here's a matcher:

IList<PdfBookmark> FindBookmarksWithName(string s, PdfBookmarkTree tree)
{
    List<PdfBookmark> marks = new List<PdfBookmark>();
    VisitBookmarks(tree.Bookmarks, mark => if (mark.Text == s) marks.Add(mark));
    return marks;
}

當然,如果您只想查找訪客,則可以將訪客修改為采用謂詞和短路。

現在,要弄清楚如果您有特定的書簽,您應該去哪個頁面並不像提取頁面索引那樣簡單。 這是因為書簽不必轉到特定頁面。 書簽具有與之關聯的動作,並且該動作可以是單擊書簽時要做的事情的列表。 例如,我可以執行一個單擊動作,該動作是兩個動作的列表,這些動作首先交換第一頁和最后一頁,然后轉到第一頁。

因此,您要做的就是單擊操作並遍歷列表,然后嘗試找到“轉到視圖”操作,然后將目標標識為頁面索引並進行抓取。

是的,這比您想象的要多得多,因為PDF指定的內容比需要的要豐富得多。 目標頁面可以是索引頁面,但也可以是本地文件系統上其他文檔中的頁面,因此我們需要檢查以了解我們的每一步。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM