Расшифруйте много PDF-файлов за один раз, используя pdftk
У меня есть 10 PDF-файлов, которые запрашивают пароль пользователя, чтобы открыть. Я знаю этот пароль. Я хочу сохранить их в расшифрованном формате. Их имена файлов имеют вид: static_part.dynamic_part_like_date.pdf
Я хочу конвертировать все 10 файлов. Я могу дать * после статической части и работать на всех них, но я также хочу соответствующие имена выходных файлов. Таким образом, должен быть способ перехватить динамическую часть имени файла и затем использовать его в выходном имени файла.
Обычный способ сделать это для одного файла:
pdftk secured.pdf input_pw foopass вывод unsecured.pdf
Я хочу сделать что-то вроде:
pdftk var = secure *.pdf input_pw foopass выход незащищенный +var.pdf
Благодарю.
1 ответ
Ваш запрос немного двусмысленный, но вот несколько идей, которые могут вам помочь.
Предполагая, что 1 из ваших 10 файлов
# static_part.dynamic_part_like_date.pdf
# SalesReport.20110416.pdf (YYYYMMDD)
И вы хотите, чтобы только SalesReport.pdf преобразовывался как незащищенный, вы можете использовать сценарий оболочки для выполнения ваших требований:
# make a file with the following contents,
# then make it executable with `chmod 755 pdfFixer.sh`
# the .../bin/bash has to be the first line the file.
$ cat pdfFixer.sh
#!/bin/bash
# call the script like $ pdfFixer.sh staticPart.*.pdf
# ( not '$' char in your command, that is the cmd-line prompt in this example,
# yours may look different )
# use a variable to hold the password you want to use
pw=foopass
for file in ${@} ; do
# %%.* strips off everything after the first '.' char
unsecuredName=${file%%.*}.pdf
#your example : pdftk secured.pdf input_pw foopass output unsecured.pdf
#converts to
pdftk ${file} input_pw ${foopass} output ${unsecuredName}.pdf
done
Вы можете обнаружить, что вам нужно изменить %.*
вещь для
- меньше полосы с конца, (используйте%.*) чтобы удалить только последнюю '.' и все символы после (полоса справа).
- отделить от фронта (используйте #*.) только статическую часть, оставив динамическую часть ИЛИ
- раздеть спереди (используйте ##*.), чтобы раздеть все до последнего '.' голец.
Вам действительно будет гораздо легче определить, что вам нужно в cmd-строке. Установите переменную с 1 примером fileName
myTestFileName=staticPart.dynamicPart.pdf
а затем использовать эхо в сочетании с модификаторами переменных, чтобы увидеть результаты.
echo ${myTestFileName##*.}
echo ${myTestFileName#*.}
echo ${myTestFileName##.*}
echo ${myTestFileName#.*}
echo ${myTestFileName%%.*}
и т.п.
Также обратите внимание, как я комбинирую измененное значение переменной с простой строкой (.pdf), в unsecuredName=${file%%.*}.pdf
IHTH