Цель проекта - добавление поддержки облачной печати принтерам, которые изначально не поддерживали эту технологию.
Здесь хранится полный код сервлета, который загружается в Apache Tomcat на необходимое устройство (в нашем случае на Raspberry Pi 4) и обрабатывает запросы на печать в пределах локальной сети.
Проект почти полностью написан на языке Kotlin с использованием технологии Kotlin Multiplatform. Присутствует разделение на 3 модуля: shared
- модуль общего кода, composeApp
- модуль с кодом для отрисовки интерфейса с помощью фреймворка Compose Multiplatform и server
- модуль с кодом сервера.
В модуле находится лишь один класс ServiceAttributeSet.kt
, который используется для клиент-серверного взаимодействия.
Модуль разбит на подмодули commonMain
- модуль с кодом, используемым при отрисовке всех интерфесов проекта и wasmJsMain
- модуль кода для отрисовки интерфейса веб-страницы.
Модуль с кодом сервера. Использует библиотеку Ktor с модулями CORS, Routing и ContentNegotiation. Также возвращает веб-страницу, используя скомпилированный (транслированный) код модуля wasmJsMain
, который находится в папке libs/wasm
. Одноимённый объект в файле PrintingTools.kt
ответственнен за печать (использует содержимое пакета javax.print
)
- Пользователь заходит на веб-страницу
- Пользователь выбирает принтер
- Пользователь выбирает атрибуты печати
- Пользователь выбирает и загружает файл для печати
- Пользователь начинает печать