У меня есть набор файлов PDF в папке. Я хотел бы делать водяные знаки на всех них. watermak должен быть названием самого файла. Как?
Я использую человечность 18.04LTS
Создайте сценарий 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
Команда создаст файлы filename.pdf.pdf с водяным знаком имен файлов, но без расширения и с 15 длинами символов.
Сценарий главным образом создается @meuh.
Результат:
Следующий вариант команды поместит водяной знак в фон, таким образом, это могло быть похожим прозрачный:
for f in ./*.pdf; do ./pdfstamp.sh "$f" > watermark.pdf && pdftk "$f" background watermark.pdf output "$f.pdf"; done
Но этот метод имеет оборотную сторону: этот водяной знак мог быть покрыт изображениями.