如何在Linux中通过for循环批量为目录下所有PDF文件添加水印?
如何在Linux中通过for循环批量为目录下所有PDF文件添加水印?
嘿,我来帮你搞定这个批量加水印的需求!你已经掌握了单PDF文件加水印的pdftk命令,那批量处理其实用Linux的for循环就能轻松实现,分两种常见场景给你详细说:
场景1:保留原文件,生成带标记的新水印文件
如果你不想改动原文件,想生成带-WM.pdf后缀的新水印文件,直接用下面的循环命令就行:
for pdf in *.pdf; do pdftk "$pdf" stamp watermark.pdf output "${pdf%.pdf}-WM.pdf" done
简单解释下命令里的关键部分:
*.pdf:会匹配当前目录下所有以.pdf结尾的文件"$pdf":代表当前循环到的单个PDF文件名${pdf%.pdf}:这是Linux的参数替换语法,作用是去掉原文件名末尾的.pdf后缀,之后再拼接-WM.pdf,就得到了像report-WM.pdf这样的新文件名
场景2:直接替换原文件(谨慎操作!)
如果你想直接给原文件加上水印、覆盖掉原来的文件,记得一定要先备份原文件(避免意外丢失数据),然后用下面的命令:
for pdf in *.pdf; do # 先生成临时水印文件,确认成功后再替换原文件 pdftk "$pdf" stamp watermark.pdf output temp_wm.pdf && mv temp_wm.pdf "$pdf" done
这里用&&来确保只有当pdftk成功生成水印文件后,才会执行mv命令替换原文件,避免原文件被损坏。
小提示:如果你的水印文件watermark.pdf不在当前工作目录,记得写全它的路径,比如/home/yourname/documents/watermark.pdf。
备注:内容来源于stack exchange,提问作者PolGZ
相关产品推荐
相关产品推荐

