Взять защищенный (безопасный) pdf и сохранить как редактируемый (обычный) pdf?

334
Narzard

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

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

0

1 ответ на вопрос

1
Narzard

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\ (Conv).pdf" -F $_.BaseName  & "$GhostScript" -dPDFA -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile="$OutputFile" "$InputFile" } 

Сценарий powershell сначала устанавливает путь к исполняемому файлу GhostScript 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 в том же каталоге.

Похожие вопросы