используйте Acrobat, чтобы уменьшить размер файла с Python или из командной строки - PullRequest
0 голосов
/ 05 апреля 2020

Я хотел бы уменьшить размер некоторых файлов 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) 
...