Я хотел бы уменьшить размер некоторых файлов PDF. Есть много способов сделать это, но большинство из них не работают для моих целей. Например, pdftk, cpdf и pdfoptsize не могут уменьшить размеры моих файлов. Ghostscript может уменьшить размер файла , но только при недопустимых затратах с точки зрения разборчивости рисунков. Кажется, есть несколько отличных API для уменьшения размера, но я не хочу платить. Поэтому я хотел бы автоматизировать опцию «Уменьшить размер файла» в Acrobat, которая работает хорошо. Есть ли способ сделать это в Python или из командной строки?
Я работаю Windows 10 с Acrobat DC; У меня также есть доступ к Acrobat X. Я могу настроить задание «Пакетная обработка» в Acrobat, но даже тогда мне потребуется запустить его из Python или из командной строки.
Я могу использовать API Acrobat от Python, но я не вижу, как использовать его для запуска команды «Уменьшить размер файла». Я могу установить флаг PDSaveCollectGarbage
, но это не помогает. Вот минимальный пример скрипта Python, который открывает и перезаписывает файл - он показывает степень моих знаний в этой области:
import os
from win32com.client.dynamic import Dispatch
src = os.path.abspath('original.pdf')
PDSaveFull = 0x01
PDSaveCollectGarbage = 0x20
SAVEFLAG = PDSaveFull | PDSaveCollectGarbage
try:
app = Dispatch("AcroExch.AVDoc")
if app.Open(src, src):
pddoc = app.GetPDDoc()
pddoc.Save(SAVEFLAG, os.path.abspath('./new.pdf'))
except Exception as e:
print(str(e))
finally:
app.Close(-1)