如何給pdf文件自動添加目錄和書籤?

想要直接瞭解步驟的朋友,請跳轉到下面的“Evermap公司的AutoBookmark插件“小節。

在最近的硬盤災難中,與積累的大批電子書一起丟失的還有我在這些資料上做的筆記和修改,這其中就包括爲pdf文件手工添加的目錄書籤。瀏覽和閱讀pdf格式的電子書時,目錄書籤的便利是無可取代的。有些製作精良的pdf文件自帶目錄書籤,沒有的就需要讀者自己添加。我以前都是讀到某個章節或者根據目錄跳轉到需要閱讀的章節,在該位置手工添加書籤。假如pdf是文字格式的,只需選中章節標題、複製,再點擊書籤欄的新建按鈕,創建的書籤就會具有複製的標題。假如pdf是圖片格式的,就麻煩一些,需要手工輸入書籤標題。

我重新下載了一本重要的pdf電子書,該書只有目錄,以前辛辛苦苦手工積累的幾十個書籤已不復存在,再次手工添加無疑令人沮喪。我想到了能否根據目錄自動添加對應的書籤,通過pdf工具軟件或者pdf支持的JavaScript編程應該都有可能。

上網搜索的結果證實了我的推測。採用JavaScript編程理論上是可行的,但操作起來難度較大。Adobe對pdf的編程支持無論是開發環境還是文檔,皆遠比不上微軟對Office的開發方案。官方網站上的一篇十餘年前的用JavaScript創建書籤的教程,說明能用代碼實現的功能十分侷限,只有Bookmark.createChild和Menu.execute兩種途徑,不能設置書籤的層級、前者只能創建運行JavaScript腳本的書籤,後者只能在當前位置創建書籤。根據Adobe最新的pdf的JavaScript API文檔,現在pdf的可編程性改進了,不過要基於目錄創建書籤依然不是一項簡單的任務。而且Adobe的Acrobat PDF閱讀器免費版是不支持運行自定義JavaScript的,支持JavaScript插件的版本收費幾百美金。即使使用國內的破解版,也會發現其JavaScript的編輯環境簡陋得令人震驚——僅有一個文本框。

工具方面,開發了廣爲流行的Foxit PDF閱讀器的Foxit公司的debenu子公司有一款Aerialist產品,根據網站上的介紹能夠自動創建書籤。該軟件的售價同樣高達幾百美金,幸好有個免費試用版。網站要求輸入用戶名、郵箱和電話等信息才能下載試用版,這本來很正常,然而精明的debenu公司爲了確保用戶來自企業,要求郵箱是企業郵箱而非163、Gmail等公用的個人郵箱,杜撰一個企業郵箱地址通過驗證後,網頁提示下載鏈接已經發往該郵箱。

Evermap公司的AutoBookmark插件

該插件的介紹(https://www.evermap.com/autobookmark.asp#StartBookmarks)令人心動,列明具備從目錄創建書籤的功能。個人用戶的版本也要200多美金,讓我們下載30天試用版一探究竟。

依據菜單的文字,選擇Bookmarks\Bookmark table of contents,提示要先選中目錄,如果需要更精確的控制,可以使用Bookmarks\Bookmark words from list菜單項。於是調用該命令,根據彈出的對話框的提示,將要爲其創建書籤的目錄項粘貼到文本框中,勾選若干選項,運行。結果是創建的書籤指向了目錄頁面,原因也不奇怪,該功能是根據文本在pdf中搜索,在某個位置找到後便創建指向該位置的書籤,目錄中的文本當然是首先被找到的。

我希望利用的是目錄中的頁碼,遂回過頭使用Bookmark table of contents命令,選中部分目錄試驗,效果非常好。缺點有兩條,一是創建的書籤位於同一層級,沒有按照目錄那樣分層;二是跳轉到的頁面都縮小到不合適的比例。第一個問題只能手工解決,通過剪切書籤,再粘貼到某個書籤下面或後面,來創建正確的層級。第二個問題經過猜測和試驗可以利用Bookmarks\Modify bookmarks\Set zoom types菜單項來解決,在彈出的對話框中,將頁面的伸縮類型設爲默認的Inherited,運行後所有書籤打開的頁面都將使用用戶設置的伸縮比例。

如何自動創建目錄?

目錄雖然在電子閱讀器中不像書籤那樣方便,但作爲文件的一部分,有些讀者還是有需求的,特別是在打印成紙質件的場景中。在Word中,可以利用文檔中的標題自動創建目錄。通用的pdf閱讀器沒有這樣的功能,變通的方法是先將pdf轉換成word文檔,生成目錄後再轉換回pdf文件。

另外,如果已經有指向各章節的書籤,上面介紹的AutoBookmark插件有Table of contents\Create TOC from bookmarks的功能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章