Печать файлов с определенными настройками из веб-приложения

Для клиента я создаю мобильное приложение, в котором пользователи могут выбирать между несколькими фоторамками. Они могут добавлять фотографии в эти рамки с помощью своих мобильных устройств. Когда они закончат, пользователь будет отправлен на экран оплаты. После оплаты заказа система создаст QR-код. С этим QR-кодом они могут перейти к одной из наших физических опор, где они смогут отсканировать QR-код. У столба подключен компьютер (Windows 10), QR-сканер и принтер (Mitsubishi D90). Система проверяет заказ и запускает задание на печать. На данный момент компьютер столба работает с браузером в режиме киоска.

введите здесь описание изображения

Проблема

Рамки могут иметь разные размеры:

  • 5 дюймов x 15 дюймов x 2 (принтер разрезает рамку пополам, чтобы у вас было два отпечатка)
  • 10” x 15”
  • 15” x 10”

Когда я использую собственное окно печати, все работает нормально. Мои рамки идеально вписываются в страницу. Я могу выбрать разные размеры страниц и использовать внутренний резак. Однако я хочу автоматизировать весь этот процесс. Система должна иметь возможность переключаться между различными размерами и помещать задание прямо в очередь.

Подход №1

Поскольку на компьютере запущено окно браузера, моей первой мыслью было настроить приложение NodeJS, которое могло бы получать кадры с сервера и помещать задание прямо в очередь. Я просмотрел Node-Printer. На моем Macbook все работало как часы (используя CUPS), но, к сожалению, столы работают под управлением Windows. Я попытался настроить все так, чтобы оно работало так же, как на моем Macbook, но мне не удалось обработать задания на печать. Однако я получил сообщение о том, что задание отправлено на мой принтер. Я потратил несколько дней, пытаясь заставить это работать, но у node-printer, работающего в Windows, есть много ограничений. Я также попытался создать раздел Ubuntu, чтобы посмотреть, работает ли он оттуда, но это привело к той же проблеме.

Подход № 2

Моей второй мыслью было настроить принтер как облачный принтер Google. Таким образом, я могу отправлять задания со своей веб-страницы непосредственно в API печати. Однако я обнаружил много ограничений, когда дело доходит до выбора тех же настроек, что и при использовании собственного окна печати. Слева окно родной печати, справа окно печати гугла.

введите здесь описание изображения

Я также попытался получить настройки принтера с помощью API поиска принтеров. Я вижу множество настроек (включая размеры страниц), но каждый раз, когда я пытаюсь что-то напечатать, отпечатки не совпадают. Рамки слишком маленькие, слишком большие, неправильно повернуты, странные поля и т. д. Я попробовал 100 разных отпечатков со всеми возможными комбинациями настроек, но не было ни одного, близкого к тому, что я получаю при использовании родного диалога печати.

Я также пробовал Electron, но не смог указать никаких настроек. Я предполагаю, что это также использует решение, подобное узлу-принтеру.

Уже не знаю куда смотреть и как это исправить. Я провел слишком много дней, пытаясь понять, что происходит. Есть ли другие (хорошие) подходы, о которых я не подумал? Есть ли способ получить те же настройки в Google Cloud Print?

TL;DR: Нужна помощь, чтобы отправить задания на печать в очередь из окна браузера (или оболочки, такой как Electron). Может быть либо через API, такой как Google Cloud Print, либо напрямую через USB.


person Rover    schedule 25.02.2019    source источник


Ответы (1)


Попробуйте Виртуальный принтер Google и задайте свои собственные настройки при запуске печати.

https://developers.google.com/cloud-print/docs/appInterfaces#submit

См. документ выше. И когда вы отправляете задание, добавьте дополнительный параметр под названием «тикет». И укажите размер носителя в тикете.

И это выглядит так:

ticket :   {"version":"1.0","print":{"media_size":{"width_microns":210000,"height_microns":297000,"is_continuous_feed":false,"vendor_id":"ISO_A4"}}}

(^ укажите размеры, которые вы хотите напечатать по высоте и ширине)

Вы можете найти стандартные размеры в следующем pdf в разделе 4.2:

http://ftp.pwg.org/pub/pwg/cloud/white/Google_GCP/CDD_2013-11-06.pdf

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

person Anirudh Saria    schedule 28.03.2019