Каждый день у меня есть сценарий, который очищает веб-сайт и загружает ежедневные отчеты в виде защищенных PDF-файлов. Это означает, что PDF-файлы доступны для просмотра, но не редактируются без пароля. Только для чтения, если хотите. У меня было много запросов от сотрудников, которые хотят редактировать эти PDF-файлы, не открывая их, нажимая кнопку «Сохранить как», а затем повторно распечатывая PDF-файл на принтере PDF в виде нового редактируемого файла.

Есть ли решение, которое может массово преобразовать эти защищенные PDF-файлы в редактируемые? Я думал о какой-то "горячей" папке, куда я могу поместить защищенные PDF-файлы, и они автоматически конвертируются и сохраняются.

1 ответ1

1

GhostScript может сделать это легко. Вы можете скачать его здесь: http://ghostscript.com/download/gsdnld.html В этом примере я использую 32-разрядную версию для Windows.

Ниже приведены два файла. Один - это скрипт powershell, а другой - командный файл. Пакетный файл запустит сценарий powershell и пропустит все параметры политики выполнения, чтобы его можно было запускать с любого компьютера без конфигурации powershell. Сценарий powershell использует ghostscript для перепечатки защищенных PDF-файлов и сохранения их как обычных PDF-файлов в определенном каталоге.

Пакет (расположение: Q:\PDFStoPDF\convertPDF.bat)

cd "q:\PDFStoPDF\gs"
powershell.exe -noexit -ExecutionPolicy Bypass -File "q:\PDFStoPDF\gs\pdfconvert.ps1"

Во-первых, пакет изменяет каталог на местоположение GhostScript EXE и сценария powershell ниже. Затем он обходит политику выполнения и запускает скрипт powershell.

PowerShell (расположение: Q:\PDFStoPDF\gs\pdfConvert.ps1)

$GhostScript = "q:\PDFStoPDF\gs\gs9.20\bin\gswin32c.exe"

Get-ChildItem "Q:\PDFStoPDF\*.pdf" | Where {
    $_.BaseName -NotMatch "Conv"
} |  ForEach-Object {
    $InputFile = $_.FullName
    $OutputFile = "Q:\PDFStoPDF\{0} (Conv).pdf" -F $_.BaseName

    & "$GhostScript" -dPDFA -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile="$OutputFile" "$InputFile"
}

Сценарий powershell сначала устанавливает путь к GhostScript exe gswin32c.exe . Далее мы сообщаем ему, что нужно получить все PDF-файлы из папки «Q:\PDFStiPDF\», где имя файла не содержит букв "conv" по порядку. Продолжая по конвейеру, мы сообщаем ghostscript, что входным файлом будет текущее имя файла, а выходной файл будет находиться в том же каталоге, но просто добавим CONV в конец имени файла.

Перед сценарием: Q:\PDFStoPDF\myPDF01.pdf

После сценария : Q:\PDFStoPDF\myPDF01Conv.pdf

Ключ -NotMatch позволяет файлам, которые уже были преобразованы, оставить нетронутыми.

Далее скрипт распечатывает и сохраняет PDF-файл, используя PDF-принтер pdfwrite

Итак, чтобы сделать эту работу, нужно перетащить файл в каталог Q:\PDFStoPDF\, а затем щелкнуть по файлу .bat, который там находится. Он возьмет файл PDF и сохранит его в виде редактируемого файла PDF в том же каталоге.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .