Как написать драйвер виртуального принтера для Mac OSX

Мне нужно написать "драйвер виртуального принтера" для OSX, так что, когда пользователь нажимает Command + P, чтобы открыть диалоговое окно "Печать", он видит мой виртуальный принтер... который будет использоваться для создания файлов разных типов, вместо физической печати на бумаге.

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

Ответ 1

Вместо того, чтобы писать драйвер, рассмотрите возможность использования служб PDF в диалоговом окне печати OS X. В системном каталоге /Library/PDF Services или user ~/Library/PDF Services вы можете поместить AppleScripts, рабочие процессы Automator или символические ссылки/псевдонимы в приложения или папки. Эти элементы появятся во всплывающем меню PDF в диалоговом окне печати, и если пользователь выберет элемент, PDF файл будет помещен в папку или передан в приложение, script или рабочий процесс.

Ответ 2

Он называется VipRiser - расширяемый виртуальный принтер PDF

Уже есть драйвер, который делает это. VipRiser устанавливает принтер, который сохраняется в файле. Я использую его для "распечатывания" на музыкальной ноте, которую я покупаю в Интернете. Существующие опции "Сохранить в PDF" внизу диалогового окна принтера не будут работать, потому что поставщик музыки отключил эту функцию, и вы должны печатать на принтере.

Для самой широкой и простой поддержки печати на виртуальном принтере я использую VipRiser вместо использования Услуги PDF. Службы PDF работают в некоторых случаях, но многие сайты препятствуют использованию служб PDF.

Ответ 3

Если драйвер принтера абсолютно необходим, а службы PDF не подходят.

Решение состоит в том, чтобы написать свой собственный драйвер CUPS - и Mac OS, и Linux используют CUPS для печати, поэтому решение может работать для обеих систем.

Документация для CUPS содержит инструкцию по написанию драйвера (https://www.cups.org/doc/postscript-driver.html), которая обычно состоит из создания:

Есть хороший учебник о том, как написать один на Python: https://behind.pretix.eu/2018/01/20/cups-driver/ и предоставляет пример открытого исходного кода для управления принтером FGL: https://github.com/pretix/cups-fgl-printers, который можно адаптировать к вашим потребностям.