echo Impossible|sed 's/Im/To be /'

December 22, 2010

Tip. PDF watermart

在 PDF 上加浮水印


最近寫文件比寫 code 多。自從用了 ReStructuredText 配合 Trac 後更是大大便利,兼顧 wiki 共筆網頁方便瀏覽的特性以及 Latex PDF 文件印刷美觀輸出,只要訂好 Latex 格式,輸出品質絕不輸 MS Word Office.


這幾日為了在文件上加上浮水印 (watermark) ,花了點時間 google 爬網。得到了兩個作法。

  1. 由 Latex 直接印上浮水印,生成 PDF。
  2. 後製作,在即有的 PDF 上透過列印或程式合成製作有浮水印的 PDF。

兩種方法各有優點,在測試過考量作法及用途後,最後採用第二種方法,而用的工具則是 pdftk 。輸出結果如下,如你所見, 一種是以背景方式出現,但會被圖蓋過去。另一種是戳印,但會把字及圖直接蓋掉。

$ pdftk INPUT.pdf background Watermark.pdf output OUTPUT-1.pdf  # background 背景
$ pdftk INPUT.pdf stamp Watermark.pdf output OUTPUT-2.pdf       # stamp 戳印

wm1 wm2

看了幾個範列大部份的都採用背景方式出現,浮水印就讓圖蓋過去。但無意中我抓到了這個浮水印圖檔 logo.pdf ,它打開了我一線曙光。

$ pdfinfo logo.pdf
Title:          NCTU LOGO_10
Creator:        Adobe Illustrator CS2
Producer:       Adobe PDF library 7.77
CreationDate:   Mon Jul 27 17:07:13 2009
ModDate:        Mon Jul 27 17:11:55 2009
Tagged:         no
Pages:          1
Encrypted:      no
Page size:      107.49 x 105.676 pts
File size:      360988 bytes
Optimized:      no
PDF version:    1.5

是的這是張具有透明度的 pdf 檔,而這個透明度讓事情變得不一樣了。在數日的嘗試後,我總算是找到了在 Linux 上生成 具透明度 pdf 與簍空字的工具及方法,於是效果如下。

$ inkscape watermark.svg -A watermark.pdf
$ pdftk INPUT.pdf stamp watermark.pdf output OUTPUT-3.pdf

$ mkbitmap -s 1 -t 0.2 watermark.bmp ; potrace watermark.pbm ; epstopdf watermark.eps
$ pdftk INPUT.pdf stamp watermark.pdf output OUTPUT-4.pdf

wm3 wm4

作法是用 inkscape 作出具透明度的 pdf 或是由 svg 轉 pdf。而簍空字則是爬網 google 找到的方法,用 mkbitmappotrace 再用 inkscape 或是 epstopdf 作成 pdf 再交由 pdftk 處理。