Я работаю над проектом для OSX, где пользователь может выбрать коллекцию документов (из любого приложения), которые мне нужны для создания PDF. В стандартном диалоговом окне "Печать Macintosh" есть кнопка PDF, в которой есть несколько команд, связанных с PDF, включая "Сохранить как PDF...". Однако мне нужно создать PDF файл, не требуя взаимодействия с пользователем. Я в идеале хочу, чтобы это работало с любым типом документа.
Здесь варианты, которые я изучил до сих пор:
- Действия автомата. Там есть библиотека PDF для Automator, но она обеспечивает действия для работы с файлами PDF, а не для их создания. Существует действие Finder для печати любого файла, но только для реального принтера.
- AppleScript. Некоторые приложения имеют возможность генерировать PDF файлы (например, если вы отправляете "сохранить документ в" test.pdf "на страницы, он будет генерировать PDF файл (но это работает только для Pages - мне нужна поддержка любого типа документа).
- Пользовательский принтер. Я мог бы создать драйвер виртуального принтера, а затем использовать действие автомата, но мне не нравится идея запутать пользователя с дополнительным принтером в списке печати.
Я надеюсь, что есть какой-то способ взаимодействия с активным приложением, как если бы пользователь выполнял следующие шаги:
- Сделайте Cmd-P (открывает диалоговое окно печати)
- Нажмите кнопку "PDF"
- Выберите "Сохранить как PDF..." (второй элемент в меню)
- Введите имя файла в диалоговом окне сохранения
- Нажмите "Сохранить"
Если это лучший подход (это?), то реальная проблема заключается в следующем: как мне отправлять события пользовательского интерфейса во внешнее приложение (нажатия клавиш, события мыши, выбор меню)?
Обновление: Просто для уточнения одной точки: документы, которые мне нужно преобразовать в PDF, - это документы, созданные другими приложениями. Например, пользователь может выбрать документ Word или таблицу Numbers или чертеж OmniGraffle или веб-страницу. Общий знаменатель состоит в том, что в каждом из этих документов есть связанное приложение, и это приложение знает, как его печатать (и OSX знает, как отображать вывод печати в файл PDF).
Итак, образцы в Cocoa Dev Central не помогают, потому что они хотят создать PDF из моего приложения.