有没有办法用命令行在每个pdf上添加水印?因为我需要从代码中设置params
'gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile="7ed753c56994067cb0c8dc18fbf14921.pdf" "b79d2282c15b7e824cb8ee400401161d.pdf" "f21958c0b3a4a01fe22c9a60b6e15121.pdf" "d46615b5dd7b6e6565ef1ce8b117b860.pdf" "f46ea9512f5763693c84d8061eeff742.pdf"'
我只需要设置水印,不透明度,位置x,y和宽度\高度
的路径答案 0 :(得分:3)
如果您只能使用文本而不是图像进行水印,那么您可以使用“设置行宽”笔划来模拟水印。
只需创建一个如下所示的mark.ps文件:
<<
/EndPage
{
2 eq { pop false }
{
gsave
/Helvetica findfont 48 scalefont setfont
newpath
.90 setgray 130 70 moveto 50 rotate
(${watermark}) false charpath
1 setlinewidth stroke
grestore
true
} ifelse
} bind
>> setpagedevice
然后运行:
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=watermarked.pdf mark.ps original.pdf
我已经在github中名为pdf-bash-tools的普通旧bash(POB)开源CLI项目中提供了密码保护,搜索,拆分和合并等功能。
答案 1 :(得分:0)
向每个页面添加内容的唯一方法是使用PostScript为您完成。添加自定义EndPage过程将允许您在页面完成之前立即在呈现的页面位图上放置标记(或者在pdfwrite的情况下,附加到页面内容流)。
PostScript不支持透明度,因此您无法立即使用PostScript来实现“不透明度”。但是,Ghostscript确实支持pdfmark运算符,而对于PDF输出仅,可以使用它。
所以你需要做的是编写一个EndPage程序,该程序使用pdfmark在页面上绘制注释。注释的外观流将包含“水印”的绘图操作。如果您希望外观涉及透明度,您可能需要添加透明度组,但也可以使用pdfmark完成。