PDF檔案格式是目前最重要的檔案格式之一,因為她可以確實保留住檔案的格式,包含字型以及圖形顏色、比例,並且提供解析度極高的列印效果。本文僅就最常用的合併、拆解、旋轉、加解密,以及簡單的編輯功能作筆記。
pdftk(pdf toolkit)是一套可以拆解、合併pdf的超實用小工具,還可以進行加解密,頁面旋轉、解出metedata,書籤、資料欄位等非常多專業功能!解決了往常只有Adobe Acrobat Professional才能使用的功能。隨著pdf越來越普及,字型跟格式都越來越要求跟在不同平台下有完全相同的呈現方式,我們確實是需要學習這樣的實用工具。更棒的是,他是開放原始碼並且以GPL授權的軟體,在許多linux上都是可以直接安裝的,太方便了!
以下我僅翻譯網頁中的範例,在加上自己的註解作為筆記。
- 合併多個pdf檔:
pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf
- 從數個pdf檔取出某幾頁並合併成另一個檔案:
pdftk A=1.pdf B=2.pdf cat A1-7odd B2-endeven output combined.pdf
取出1.pdf的1,3,5,7頁跟2.pdf的2~最末頁,合併成combined.pdf
- 頁面旋轉:
pdftk src.pdf cat 1E 2-endoddW 2-endevenS output.pdf
第一頁順時針旋轉90度,之後的奇數頁逆時針90度,偶數頁轉180度。
其中,E=R(right), S=D(down), W=L(left),當然也可以ESW跟RDL混用。
- 整份文件上下顛倒:
如上,其實就是使用D或S參數:
pdftk src.pdf cat 1-endS output rotated.pdf
- 加密pdf檔案:
pdftk預設的加密強度是128bits,範例如下:
pdftk plane.pdf output encypt.pdf owner_pw 加密密碼
另一個強度較小的為40bits,他可以節省不小檔案大小:
pdftk plane.pdf output encrypt.pdf owner_pw 加密密碼 encrypt_40bit
- 加密檔案其實只是限制你不能修改某些受限的部份,如果要求輸入密碼才能開啟這份pdf檔:
pdftk encrypt.pdf output lock-encrypt.pdf user_pw 使用者密碼
- 解密檔案:
pdftk encrypt.pdf input_pw 加密密碼 output decrypt.pdf
- 檔案加密還為了防止他人複製、修改及列印內容。要允許使用者可以列印:
pdftk plane.pdf output encrypt.pdf owner_pw 加密密碼 user_pw 使用者密碼 allow printing
允許的動作如下:
- Printing
高品質列印 - DegradedPrinting
低品質列印 - ModifyContents
允許修改內容(包含架構) - Assembly
僅允許修改架構 - CopyContents
Also allows ScreenReaders - ScreenReaders
...這個不是很懂 - ModifyAnnotations
可修改註解 - FillIn
...這個不是很懂 - AllFeatures
以上所有的options全都開放。
- Printing
- 合併兩個檔案成一個為加密的檔;其中一個檔為加密檔案:
pdftk A=encrypt.pdf B=plane.pdf input_pw A=加密密碼 cat A B output combined.pdf
- (少用)若pdf的page串流有經過壓縮,則會無法修改pdf code。利用uncompress來解壓縮:
pdftk src.pdf output plane.pdf uncompress
同理,你也可以下compress指令來壓縮。
- 將pdf檔每一頁獨立存成個別的pdf檔:利用burst指令
pdftk large.pdf burst
他會在當前目錄產生一個doc_data.txt的log檔作為紀錄。
- (少用)修復資料串流長度以及XREF table:
pdftk broken.pdf output fixed.pdf
- (少用)加入浮水印:
pdftk contents.pdf background Watermark.pdf output contents_WM.pdf
從指令上也能看出是否要讓浮水印蓋過圖片,細節上還請參考Lloyd神人的在 PDF 上加浮水印
pdftk contents.pdf stamp Watermark.pdf output contents_WM.pdf
- 印出pdf檔裡所有的metedata(就是書籤、頁籤、所有屬性等等):
pdftk A.pdf dump_data output report.txt
事實上還有更多細節的功能,不過礙於自己也不是很懂,節錄這些常用的功能應該就非常足夠。另外,關於PDF密碼的一些概念,這裡作一些簡單的介紹。pdf的「密碼」大致兩種類型,一種叫Document-open password,另一種則是Permission password。Document-open password是開啟這個pdf檔所需要的密碼,跟使用者比較相關,也稱之為user_pw;Permission password比較像是administrator/owner的密碼,只有所有人才能修改裡面的內容以及關鍵屬性,又稱之為owner_pw。在pdf 1.4以及更早的時代(也就是acrobat 5.0),加密強度僅40bits;到了現在強度已經到128bits;到了Acrobat 9.0以後,導入了AES加密演算法之後,加密強度已經高達256bits,不過pdftk還不支援這麼高的強度;就算支援,做雜湊加密跟解密的時間也會很久。
其實你還可以找到pdftk的gui版本--GUI for pdftk,該作者也大方的提供了各種不同版本給各種作業系統使用,不過他所使用的函式庫實在是太舊了,就算我用軟連結仿造一個他要的版本給他,在執行上仍會有macro mismatch的錯誤,反正pdktk幾乎是無敵的,我也就不理會是否有圖形介面了。
在Windows下有著名的軟體:PDF password recovery--能破解pdf密碼的障礙,那麼在linux底下呢?
pdfcrack是一套基於GPL的開放原始碼的程式,她自動偵測加密長度,並且用內建字典逐個測試。破解密碼時間的長短仰賴於cpu的能力。sourseforge僅提供原始碼,不過別擔心,編譯一定會成功的,只要你有裝gcc的話。
另一個方法是使用wine去模擬windows下破解pdf密碼的軟體。我以pdf password remover做測試,並且利用pdftk隨便加密一個pdf來試驗,發現雖然她似乎能很快的
產生一個乾淨的pdf檔,但是我的pdf內容卻全部被清空!不知道是wine的原因還是如何,總是這看來不太成功。
另一個解決方案則是GuaPDF。GuaPDF這間公司提供了Demo, Local Quad, Distributed以及UNLIMITED四種版本,包含solaris,linux,windows,macos四種平台。Demo版本是免費使用的,如果你的顯示卡是nvidia的晶片且安裝了cuda驅動程式,解密速度可以比一般僅用cpu功能的電腦快上七倍。
linux Demo | MacOS Demo(Intel) | Solaris Demo | Solaris x86 Demo |
利用GuaPDF能快速的產生一個未經加密的pdf檔,解密之後用Acrobat reader可能會有一些錯誤訊息,這是很正常的。
但是畢竟是demo版,您可能會遇到下列錯訊息:
Guaranteed PDF Decrypter v. 3.1 (freeware DEMO version) - CPU version (c) PSW-soft, 2000-09, by P. Semjanov, S. Lysak. http://www.guapdf.com This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/) 'Corring, Kay, JP 2001, slab window Argentina.pdf' is the uncompressed document with 40-bit RC4 encryption This document has no user password, only restrictions present Key found! (exact value is 7F 7A AC E3 FC) Would you like to decrypt it now?y Decryption in progress, please wait... 0% complete Warning: Demo limitation reached in line 430 Your file is 100% supported by GuaPDF and decryption is guaranteed, but demo limitation was reached and file was not fully decrypted and saved as 'Corring, Kay, JP 2001, slab window Argentina.decrypted.pdf'. It may contain only few (or zero) readable pages and/or produce any error messages. Please get the full version to correctly decrypt this file.這是因為demo版限制只能用在430行以內的pdf檔,只好依照需求去跟他買羅~
所以現在我可以用pdftk來任意整理我的pdf文件,GuaPDF來克服某些學術檔案無法列印或複製的問題。
如果要編輯pdf檔案本身,除了要有好工具之外,還需要會一些pdf的語法,這就超過了筆者的能力範圍;不過簡易的修改pdf,仍然可以透過pdfedit這個小程式來幫忙:
pdfedit可以從套件庫裡直接安裝喔!建議閱讀官方網站提供的閱讀文件。如此一來,編修pdf檔時就不需要用vbox開一個windows又使用盜版軟體了!
沒有留言:
張貼留言