前言
作為程序員,大家都知道的,總是會被技術小白問各種跟編程沒什么關系的硬件、軟件問題。曾經被一技術小白同事問到有沒有什么辦法合並pdf文件,當時自己也是一頭霧水,因為自己工作生活很少會去操作pdf文件,而當時公司對開發人員的電腦權限管理很嚴格,不論是上網還是安裝軟件,都受到很大限制,最后硬着頭皮忙活了一陣子也沒在解決。
前兩天在寫批處理程序的時候,發現批處理程序是有合並文件的命令的,我忽然想起之前這個同事的問題,就試了一下合並pdf,然而並不行。雖然失落了一下,但本着學習的精神還是百度了一下關於pdf的一些知識,發覺大部分操作pdf文件的軟件不僅安裝費事,還基本都要收費,我去,連我程序員都嫌費事的事,好意思都教小白么?不過當我試了下pdftk,瞬間就被吸引了,因為用起來真的很簡單,只要稍稍加工一下,就可以扔給小白們用了。
認識PDFtk
PDFtk(官網:https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/)是一款國外開發的軟件,目標是使PDF更容易操作。官網上掛着一些客戶軟件的核心功能其實也是要收費才能用,但是它有一個服務器版本是免費的,這就是本篇文章的主角。PDFtk支持合並、旋轉、加水印、加附件、加密、
下載安裝
下載地址:https://www.pdflabs.com/tools/pdftk-server/
選擇符合操作系統的版本下載,安裝過程就不表了,小白式的安裝就可以。安裝成功后安裝目錄的bin目錄會有libiconv2.dll和pdftk.exe文件,這就是操作pdf的PDFtk工具。環境變量也多了這個工具的路徑。如果有像博主這樣公司不給安裝軟件的,復制這兩個文件就可以。
操作命令
官網(https://www.pdflabs.com/docs/pdftk-cli-examples/)上有舉了一些例子,這里整理成批處理命令方便小白,相關命令保存為.bat文件,然后把希望操作的pdf文件和.bat文件置於同一目錄即可。
合並文件夾內所有pdf,輸出combind.pdf
@echo off pdftk %cd%\*.pdf cat output %cd%\combined.pdf
把多個PDF的不同頁面組合成一個新的PDF文檔,這里取base1.pdf的第一頁,base2.pdf的第一頁,輸出combined2.pdf
@echo off pdftk A=%cd%\base1.pdf B=%cd%\base2.pdf cat A1 B1 output %cd%\combined2.pdf
旋轉PDF,旋轉的角度為上北下南左西右東(north\south\west\east),如下例,combined第一頁向右旋轉而其他保持不變則旋轉參數為1east 2-end,如果全部旋轉則是1-endeast(注意:這里沒有空格)
@echo off pdftk %cd%\combined.pdf cat 1east 2-end output %cd%\rotate.pdf
使用128位強度對PDF進行所有者加密(owner password),加密后PDF文件處於只讀狀態,沒有所有者密碼不能對該PDF做各種文件操作。這里對base1.pdf進行所有者加密,密碼為foopass,輸出文件為poopass.128.pdf
@echo off pdftk %cd%\base1.pdf output %cd%\foopass.128.pdf owner_pw foopass
同上,同時給PDF加上訪問者密碼(會彈出一個密碼輸入框)此例原文件為in.pdf,加密后文件為mydoc.128.pdf,所有者密碼為foopass,訪問者密碼為baz
@echo off pdftk %cd%\base1.pdf output %cd%\foopassbaz.128.pdf owner_pw foopass user_pw baz
解密PDF文檔,input_pw空一格,然后是所有者密碼,這里輸入文件為加密文件foopassbaz.128.pdf,輸出文件nopass.pdf,輸出文件會去掉所有者密碼和訪問者密碼。
@echo off pdftk %cd%\foopassbaz.128.pdf input_pw foopass output %cd%\nopass.pdf
加水印,以下命令會把stamp.pdf當成背景水印(即stamp.pdf疊加在底層)合到base1上並輸出stampback.pdf,如果想把stamp.pdf合成base1的前景水印(即stamp.pdf疊加在表層),把以下的backgroud換成stamp即可。
@echo off pdftk %cd%\base1.pdf background %cd%\stamp.pdf output %cd%\stampback.pdf
以上就是常用的pdf文件操作的相關命令了,實際上PDFtk還有提供了不少功能,具體可與參照官網和輸入在CMD輸入pdftk --help查看相關資料,這里就不一一寫出來了,畢竟小白們沒用到那么細致的功能。
附件
附件提供了自己測試用的pdf和小工具libiconv2.dll和pdftk.exe文件,如果有朋友不方便安裝(像我的上家公司)可以直接下載附件來操作。
參考:
http://blog.csdn.net/fresherman/article/details/5979204
https://www.pdflabs.com/docs/pdftk-cli-examples/