Расшифруйте много 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

Другие вопросы по тегам