Печать файлов с определенными настройками из веб-приложения
Для клиента я создаю мобильное приложение, в котором пользователи могут выбирать между несколькими рамками для фотографий. Они могут добавлять фотографии в эти кадры, используя свои мобильные устройства. Когда они будут закончены, пользователь будет отправлен на экран оплаты. Когда заказ будет оплачен, система создаст QR-код. С этим QR-кодом они могут перейти к одному из наших физических столбов, где они могут сканировать QR-код. Столб имеет компьютер (Windows 10), QR-сканер и подключенный принтер (Mitsubishi D90). Система проверяет заказ и запускает задание на печать. На данный момент компьютер-колонна запускает браузер в режиме киоска.
Эта проблема
Рамки могут иметь разные размеры:
- 5 "x 15" x2 (принтер разрезает рамку пополам, чтобы получить два отпечатка)
- 10 "х 15"
- 15 "х 10"
Когда я использую окно родной печати, кажется, все работает нормально. Мои рамки отлично вписываются в страницу. Я могу выбрать разные размеры страницы и использовать внутренний резак. Однако я хочу автоматизировать весь этот процесс. Система должна иметь возможность переключаться между различными размерами и должна иметь возможность помещать задание прямо в очередь.
Подход № 1
Поскольку на компьютере запущено окно браузера, моей первой мыслью было настроить приложение NodeJS, которое может извлечь кадр с сервера и отправить задание непосредственно в очередь. Я заглянул в Node-Printer. На моем Macbook все работало как чудо (используя CUPS), но, к сожалению, на столпах работает Windows. Я пытался настроить все на работу так же, как на моем Macbook, но не смог обработать задания на печать. Я получил сообщение, что задание было отправлено на мой принтер, хотя. Я потратил несколько дней, пытаясь заставить это работать, но у узла-принтера, работающего в Windows, есть много ограничений. Я также попытался создать раздел Ubuntu, чтобы посмотреть, работает ли он оттуда, но это привело к той же проблеме.
Подход № 2
Моей второй мыслью было настроить принтер в качестве облачного принтера Google. Таким образом, я могу перенести задания со своей веб-страницы прямо в API печати. Однако я обнаружил много ограничений, когда дело доходит до выбора тех же настроек, что и я, используя собственное окно печати. Слева окно родной печати, справа окно печати Google.
Я также попытался получить настройки принтера с помощью API Lookup Printer. Я вижу много настроек (также размеров страниц), но каждый раз, когда я пытаюсь что-то напечатать, отпечатки просто не совпадают. Рамки слишком малы, слишком велики, неправильно повернуты, странные поля и т. Д. Я перепробовал 100 различных отпечатков со всеми возможными комбинациями настроек, но не было даже одного, близкого к тому, что я получаю при использовании собственного диалогового окна печати.
Я также попробовал Электрон, но я не смог указать какие-либо настройки. Я предполагаю, что это также использует решение типа принтера узла.
Я действительно не знаю, где искать и как это исправить. Я провел слишком много дней, пытаясь понять, что происходит. Есть ли другие (хорошие) подходы, о которых я не думал? Есть ли способ получить те же настройки в Google Cloud Print?
TL; DR: Нужна помощь, чтобы отправить задания на печать в очередь из окна браузера (или оболочки, как Electron). Может быть через API, такой как Google Cloud Print, или напрямую через USB.
0 ответов
Попробуйте Google Cloud Print и задайте свои собственные настройки при запуске печати.
https://developers.google.com/cloud-print/docs/appInterfaces
Обратитесь к выше док. И когда вы отправляете работу, добавьте дополнительный параметр, называемый "тикет". И укажите размер носителя в билете.
И это выглядит так:
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
Попробуйте использовать другую комбинацию высоты и ширины для желаемых результатов