我文件夹中有一堆 pdf 文件。我想给所有文件都加水印。水印应该是文件本身的名称。怎么做?
我正在使用 ubuntu 18.04LTS
答案1
创建一个脚本
gedit /home/user/folderwithpdfs/pdfstamp.sh
,它将生成 watermark.pdf 文件,其中包含缩短的文件名的文本作为水印:#!/bin/bash text=${1?missing text to show} # Restricts string to 15 symbols from start, without extension and folder's path mtext=$(echo ${text:0:15} | sed 's/.pdf//' | sed -e 's,.*/,,') angle=45 # in degrees counterclockwise from horizontal grey=0.75 # 0 is black 1 is white ps2pdf - - <<! %!PS /cm { 28.4 mul } bind def /draft-Bigfont /Helvetica-Bold findfont 72 scalefont def /draft-copy { gsave initgraphics $grey setgray 5 cm 10 cm moveto $angle rotate draft-Bigfont setfont ($mtext) show grestore } def draft-copy showpage !
将其放入包含 pdf 文件的文件夹中
在包含 pdf 文件的文件夹中运行下一个命令,该命令每次都会创建 watermark.pdf 文件,将其应用于当前文件并将其输出到新文件:
for f in ./*.pdf do ./pdfstamp.sh "$f" > watermark.pdf pdftk "$f" stamp watermark.pdf output "$f.pdf" done
该命令将创建带有文件名水印但没有扩展名且长度为 15 个符号的 filename.pdf.pdf 文件。
脚本主要由@meuh 创建。
结果:
该命令的下一个变体将水印放置在背景中,因此它看起来像透明的:
for f in ./*.pdf; do ./pdfstamp.sh "$f" > watermark.pdf && pdftk "$f" background watermark.pdf output "$f.pdf"; done
但这种方法有一个缺点:这个水印可能会被图像覆盖。