Возможно ли выполнить QPDF через скрипт Python?
Я работаю над сценарием Python, который обрабатывает PDF-файлы, хотя некоторые из них содержат шифрование, ограничивающее использование только печати, которую я должен удалить вручную, прежде чем смогу их обработать.
Для этого я вручную использовал QPDF для удаления этих ограничений на отдельные PDF-файлы перед запуском скрипта (команды для qpdf довольно просты... внутри командной строки -> qpdf --decrypt input.pdf output.pdf)
Мой вопрос - вместо того, чтобы делать этот бит вручную, возможно ли выполнить исполняемый файл QPDF в моем скрипте Python и запустить команду? Мне не удалось найти какие-либо модули Python, специально предназначенные для управления QPDF, поэтому у меня нет особой надежды.
2 ответа
Спасибо furas за то, что они указали мне правильное направление.
Вот как я это сделал в Windows 10:
- Скачайте QPDF, распакуйте папку и сохраните ее где-нибудь на вашем компьютере. Я положил папку в C:\qpdf-5.1.2. Внутри папки находится bin\qpdf.exe.
- Задайте для переменной среды значение C:\qpdf-5.1.2\bin. Чтобы установить переменную среды в Windows 10, выберите "Свойства системы"> "Дополнительно"> "Переменные среды". Выделив PATH, нажмите "Изменить", затем нажмите "Создать" и вставьте путь к каталогу в точке 2.
Как только это настроено, вы можете ссылаться на "qpdf" в командной строке и в Python.
import subprocess
subprocess.run(["qpdf", "--decrypt", "C:/qpdf-5.1.2/bin/input.pdf", "C:/qpdf-5.1.2/bin/output.pdf"])
Используйте библиотеку pikepdf , которая основана на QPDF и упоминается в руководстве по QPDF .
pip install pikepdf
(pip или pip3 в зависимости от настроек вашей системы по умолчанию)
import pikepdf
with pikepdf.Pdf.open('input.pdf', password='passwd') as pdf:
pdf.save('output.pdf')
Если пароль представляет собой просто пустую строку, можно опустить параметр пароля, он все равно сохранит выходной файл PDF как вещь без пароля.