項目中的pdf需要添加背景圖,但是wkhtmltopdf不是很友好,圖片的大小位置有點偏移,於是就用下面這個目錄。
CENTOS服務器 6 和 7 有一些區別
CENTOS6
sudo yum install libgcj
sudo rpm -i pdftk-2.02-1.*.rpm
CENTOS7
由於CENTOS7的yum庫中不再支持libgcj
找到了一個老外的
x86_64
yum localinstall https://www.linuxglobal.com/static/blog/pdftk-2.02-1.el7.x86_64.rpm
i686
yum localinstall https://www.linuxglobal.com/static/blog/pdftk-2.02-1.el7.i686.rpm
簡介
PDFtk 是什么?我覺得官網的一句話解釋得很好。
If PDF is electronic paper, then PDFtk is an electronic staple-remover, hole-punch, binder, secret-decoder-ring, and X-Ray-glasses. PDFtk is a simple tool for doing everyday things with PDF documents.
其官方網站為: http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit
PDFtk 目前分為三個版本:
- PDFtk Server:命令行工具。支持 windows、Linux、Mac。
- PDFtk Free:圖形界面基礎免費版;僅限 windows 用戶;功能僅限於 PDF 合並和分割;
- PDFtk Pro:圖形界面專業收費版;僅限 windows 用戶,可以對 PDF 文檔進行合並、分割、旋轉、加水印、加郵戳、加密。
對於 Linux 用戶,唯一的選擇是免費的 PDFtk Server,其功能與收費 PDFtk Pro 完全相同,只是沒有 GUI 而已。作者還是很厚道的。
Linux 的各個發行版的官方源中基本都有該軟件,直接 apt-get
或者 yum
安裝即可。
功能
- 合並 PDF;
- 分割 PDF 頁面;
- 旋轉 PDF 文檔或頁面;
- PDF 解密;(不是破解)
- PDF 加密;
- 用 X/FDF 填寫 PDF 表格;
- 從 PDF 表格中生成 PDF Data Stencils;
- 加背景水印或前景印章;
- 報告 PDF Metrics,書簽和元數據;
- 增加 / 更新 PDF 書簽或元數據;
- 給 PDF 頁面或文檔加附件;
- 解壓 PDF 附件;
- 分解 PDF 文檔為多個單頁;
- 解壓縮和重壓縮頁面流;
- 修復受損的 PDF 文檔;
這功能完全可以與 Adobe Acrobat 相媲美了,更重要的是 PDFtk 支持 Linux 且完全免費。(個人用戶免費,若用於商業用途需付費)。
用法示例
具體選項看這里: http://www.pdflabs.com/docs/pdftk-man-page/
下面給出一些常見的例子。例子原文
掃描一本書,odd.pdf 為書的全部奇數頁,even.pdf 為書的全部偶數頁,下面的命令可以將兩個 pdf 合並成頁碼正常的書:
pdftk A=odd.pdf B=even.pdf shuffle A B output collated.pdf
如果 odd.pdf 是逆序的:
pdftk A=odd.pdf B=even.pdf shuffle Aend-1 B output collated.pdf
加密 PDF:
pdftk secured.pdf input_pw foopass output unsecured.pdf
PDF 128 位加密,保留全部權限:
pdftk 1.pdf output 1.128.pdf owner_pw foopass
PDF 128 位加密,保留全部權限,打開文檔需輸入密碼 “baz”:
pdftk 1.pdf output 1.128.pdf owner_pw foo user_pw baz
PDF 128 位加密,打開文檔需輸入密碼 “baz”,保留打印之外的其他權限:
pdftk 1.pdf output 1.128.pdf owner_pw foo user_pw baz allow printing
合並 in1.pdf 和 in2.pdf 到新 PDF 中:
pdftk in1.pdf in2.pdf cat output out1.pdf
或(使用句柄):
pdftk A=in1.pdf B=in2.pdf cat A B output out1.pdf
或(使用通配符):
pdftk *.pdf cat output combined.pdf
去除 in1.pdf 中的第 13 頁,並創建 out1.pdf:
pdftk in.pdf cat 1-12 14-end output out1.pdf
或
pdftk A=in1.pdf cat A1-12 A14-end output out1.pdf
對輸出進行 40 位加密,撤銷所有權限,設置 owner 密碼為 foopass:
pdftk 1.pdf 2.pdf cat output 3.pdf encrypt_40bit owner_pw foopass
合並兩個文件,其中一個需要被加密。對輸出不加密:
pdftk A=secured.pdf 2.pdf input_pw A=foopass cat output 3.pdf
解壓 PDF 頁面流,然后就可以在文本編輯器中編輯 PDF 文件:
pdftk doc.pdf output doc.unc.pdf uncompress
壓縮 PDF:
pdftk mydoc.pdf output mydoc.clear.pdf compress
修復破損的 PDF:
pdftk broken.pdf output fixed.pdf
將一個 PDF 文檔分割成一頁一個文檔:
pdftk in.pdf burst
將一個 PDF 文檔分割成一頁一個文檔,並加密,允許低質量的打印:
pdftk in.pdf burst owner_pw foopass allow DegradedPrinting
獲取 PDF 問的元數據和書簽信息:
pdftk in.pdf dump_data output report.txt
將 PDF 第一頁順時針旋轉 90 度:
pdftk in.pdf cat 1east 2-end output out.pdf
將整個 PDF 文檔旋轉 180 度:
pdftk in.pdf cat 1-endsouth output out.pdf