在Adobe Acrobat中自動建立書籍PDF的Bookmark
有時候在網路上下載下來的電子書(PDF檔)並沒有建立好書籤(Bookmark),如果要手動建立的話非常耗時耗力,所以這個PowerShell的小程式可以根據書本的目錄來自動建立書籤。
首先,你要有書本目錄的文字檔,通常可以在出版社的官方網站,該本書的資訊頁下載得到,我通常會用Excel處理。但有時候這些目錄可能只有Chapter,並沒有Section,這時候就要自己在這個PDF檔案中用複製貼上的方式將目錄複製出來,不過這個方法的缺點是,複製出來的文字會有很多雜訊,要手動剔除。
例如將這個目錄貼到下面的PowerShell腳本中
"Chapter I", | 1, |
"I.1 Section", | 1, |
"I.2 Section", | 3, |
"I.3 Section" | 7 |
開啟Windows PowerShell ISE(不是Windows PowerShell),修改下面的程式碼並輸入,存檔執行。
如果出現 無法辨識 'xxx.ps1' 辭彙是否為Cmdlet、函數、指令檔或可執行程式的名稱。...(通常第一次執行時會如此,)則必須用系統管理員的身分(按右鍵),開啟Windows PowerShell ISE,輸入Set-ExecutionPolicy RemoteSigned執行,並且同意執行原則變更。
[String[]]$Bookmark= "Chapter I", "I.1 Section", "I.2 Section", "I.3 Section" # 注意,最後一項不要加逗號 [Int[]]$Page= 1, 1, 3, 7 # 讓系統取得title叫做[ebook.pdf - Adobe Acrobat Pro]的視窗 # 並讓該視窗變成當前視窗 $wshell = New-Object -ComObject wscript.shell; $wshell.AppActivate('ebook.pdf - Adobe Acrobat Pro') # 停頓1秒,避免delay造成下一步無法順利進行 Sleep 1 # 按下鍵盤上的各鍵 # 各鍵的對應表參考https://msdn.microsoft.com/en-us/library/office/aa202943(v=office.10).aspx # -le是less or equal, -lt是less than For ($i=0; $i -le $Page.Length-1; $i++) { $wshell.SendKeys("^b") # 建立Bookmark # 注意到SendKeys("B")跟SendKeys("b")是不同的 # SendKeys("B")的效果相當於Shift+b Sleep 0.7 # 停頓0.7秒,不停頓的話,程式來不及反應 $wshell.SendKeys($Bookmark[$i]) # 輸入Bookmark名稱 Sleep 0.7 $wshell.SendKeys("{ENTER}") # 確定 Sleep 0.7 $wshell.SendKeys("{F5}") # 將focus切換到頁面 Sleep 0.7 For ($j=0; $j -lt $Page[($i+1)]-$Page[$i]; $j++) { $wshell.SendKeys("{PGDN}") # 按照頁碼移動到該頁面 Sleep 0.7 } }
No comments:
Post a Comment