Автоматизировать печать с опциями?

2

Я пытаюсь напечатать файл (PDF), без вмешательства. Не для Automator, я могу иметь дело с applecript или терминалом или чем-то еще. Особенности того, что я хочу:

  • Печать на определенный принтер
  • Печать на определенный размер страницы (нестандартный)
  • Автоповорот (опционально)
  • Масштаб, чтобы соответствовать, распечатать всю страницу (в конечном итоге 109 до 112%. 110% работает)

Я могу сделать это вручную через меню печати в Preview, только размер страницы не по умолчанию, но я хочу как-то автоматизировать его, перетаскивая.

Вещи, которые я пытался:

  1. Если я печатаю из Finder, он использует предварительный просмотр, но он выходит за пределы размера и имеет неправильный размер страницы.
  2. Если я перетащу его на принтер в ~ / Library / Printers / printername, это похоже на использование LP, но без параметров.
  3. Параметры печати в Applescript плохо документированы.
  4. Automator "Print Finder Items" это как # 1.
  5. «Печать изображений» в Automator похожа на предварительный просмотр, но «Масштабировать по размеру» не работает так, как предварительный просмотр, я не могу выбрать размер страницы, а «Автоповорот» не работает вообще.
  6. Если я печатаю из терминала через LP или LPR, я могу установить размер страницы и ориентацию / подгонку к странице, но я не могу масштабировать ее до 110%. Это самое близкое к тому, что я хочу.

Как я могу это сделать? Это не должно быть так сложно, я хочу делать то, что может графический интерфейс, а не как дополнительные функции.

В худшем случае, как я могу эмулировать управление мышью или клавиатурой в меню предварительного просмотра? Все, что для этого потребуется: 1. открыть файл, 2. открыть меню печати, 3. переключиться на предустановку или размер страницы, так как все остальные параметры, включая масштабирование, установлены по умолчанию . 4. нажать print / enter.

CDE
источник
Для эмуляции управления мышью или клавиатурой (и множества других функций, которые вы удивитесь, без чего вы когда-либо жили) вы можете воспользоваться Better Touch Tool .
Уайлдкарт

Ответы:

2

Давайте разделим проблему на две части: масштабирование и печать.

пересчет

Вы можете масштабировать PDF в командной строке. Подумайте о создании временного, масштабированного PDF для печати.

Посмотрите масштабирование содержимого PDF и размеров страницы из командной строки для предлагаемых подходов к этому. Ответ с наибольшим количеством голосов предлагает использовать cpdf с такой командой:

cpdf -scale-page "1.1 1.1" in.pdf -o out.pdf

Альтернативный инструмент есть sips. Этот инструмент включен в OS X и на удивление способен.

печать

Как вы обнаружили, системой печати OS X является Common Unix Printing System (CUPS). CUPS включает в себя инструмент командной строки, lprкоторый может принять все необходимые настройки и параметры .

Для печати PDF через командную строку смотрите:

Для просмотра списка доступных принтеров используйте:

lpstat -p -d

Чтобы распечатать файл PDF на принтере по умолчанию, используйте:

lpr file.pdf
Грэм Милн
источник
Можно ли использовать pipeи сделать весь Шебанг одновременно? как: cpdf -scale-page "1.1 1.1" in.pdf | lpr ?
Кузен Кокаин
С cpdfэтим может быть возможно. С sipsним придется идти через файл. Я подозреваю, что короткий сценарий bash или даже капля AppleScript хорошо бы завершили команду.
Грэм Милн
Учитывая, что CPDF может выполнять обрезку и масштабирование в одной команде, а затем передавать в LP, это должно быть для меня лучшим. Мне нужно проверить это.
CDE
0

В конечном итоге я использовал openи osascriptвместе с инструментом pdfcropпользователя форума MacRumor Oligarch (резервное копирование Wayback Machine в архив )

./pdfcrop /path/to/file.pdf -u in -p 6.68 1.82 -a tr -o 0.14 0.23 > ./0.pdf && \
./pdfcrop /path/to/file.pdf -b m -u in -p 3.30 1.82 -a tr -o 0.14 0.23 > ./1.pdf && \
./pdfcrop /path/to/file.pdf -b m -u in -p 3.38 1.78 -a tr -o 3.43 0.24 > ./2.pdf && \
open ./1.pdf ./2.pdf && \
osascript -e 'tell application "Finder" to delete POSIX file "'/path/to/file.pdf'"' -e 'tell application "Finder" to delete POSIX file "'./1.pdf'"' -e 'tell application "Finder" to delete POSIX file "'./2.pdf'"'
  1. Он берет исходный файл и создает три копии. Один с PDF-файлом, обрезанным по размеру (окно обрезки, без деструктивного), который я храню, и два с обрезанным по размеру (мультимедийный блок), которые являются временными.
  2. Затем он открывает их с предварительным просмотром, как две страницы / файлы в одном окне.
  3. Затем он сообщает Finder через Applescript, чтобы удалить временные файлы, в Finder, перейти в корзину. Так же, как если бы я ⌘-Deleteфайлы.
  4. Попав в Preview, я могу ⌘-Pраспечатать оба файла. Единственное, что мне нужно сделать, это изменить размер бумаги, предварительный просмотр обрабатывает масштабирование.

Очевидно, что он не делает все, что я хочу, но он помогает уменьшить объем ручной обрезки и перемещаться вперед и назад, чтобы печатать все, что мне нужно, для печати.

Поскольку CPDF может масштабироваться и обрезаться, все должно быть проще сделать из командной строки. Мне просто нужно проверить это.

CDE
источник