Przejdź do treści

Druk z aplikacji webowej na lokalną drukarkę

Drukowanie z aplikacji webowej powinno zaczynać się na backendzie, a nie w oknie drukowania przeglądarki. Dzięki temu system wybiera właściwą drukarkę, może zapobiec duplikatom i pokazuje rzeczywisty status zadania.

Zalecana architektura

Frontend wysyła do własnego backendu identyfikator dokumentu biznesowego i wybranej lokalizacji. Backend generuje lub pobiera plik, wywołuje CloudPrint Public API i zwraca własny identyfikator operacji. client_secret oraz Bearer token nigdy nie trafiają do przeglądarki.

Wybór drukarki

Podczas konfiguracji pobierz drukarki z GET /api/v1/printers i zapisz stabilny printer_id. W interfejsie można pokazywać nazwę, agenta i status online, ale nazwa nie powinna być kluczem routingu.

Doświadczenie operatora

Po kliknięciu „Drukuj” pokaż stan przyjęcia, oczekiwania, drukowania i wynik. Zablokuj przypadkowe wielokrotne kliknięcie, ale umożliw świadomy ponowny wydruk jako nową operację. Przy błędzie pokaż czytelny komunikat oraz identyfikator potrzebny wsparciu.

Odporność na problemy sieciowe

Backend powinien używać stabilnego Idempotency-Key, zapisać print_job_id i kontynuować odczyt statusu po odświeżeniu strony. Po timeout nie zakładaj, że zadanie nie powstało — najpierw ponów ten sam bezpieczny request albo sprawdź zapisany wynik.

Czego unikać

Nie wywołuj agenta z przeglądarki, nie udostępniaj drukarek w internecie, nie przechowuj sekretów w localStorage i nie traktuj wysłania requestu jako potwierdzenia wydruku. Potwierdzeniem jest dopiero końcowy status zadania.

Lista kontrolna przed wdrożeniem

  • Twórz zadania na backendzie zamiast polegać na oknie drukowania przeglądarki.
  • Przechowuj dane API na backendzie i ograniczaj je do konta właściciela.
  • Zapisuj stabilny identyfikator drukarki, a nie tylko jej nazwę.
  • Jawnie obsługuj status końcowy, ponowienia i ochronę przed podwójnym drukiem.

Następne kroki

Przewodniki dotyczące integracji CloudPrint, podłączania lokalnego agenta i obsługi procesów drukowania.