Report to printer via WebSocket

base_report_to_printer_websocket
REPOSITORY
REPOSITORYOCA/report-print-send
GIT
GIThttps://github.com/OCA/report-print-send.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/report-print-send/tree/19.0/base_report_to_printer_websocket
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYGeneric Modules/Base
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow, Dixmit
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow, Dixmit
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, DavidJForgeFlow
WEBSITE
WEBSITEhttps://github.com/OCA/report-print-send
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:50
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/report-print-send:
    - base_report_to_printer
odoo/odoo:
    - web
    - base
    - bus
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module extends *base_report_to_printer* to send print jobs through
the Odoo Bus (WebSocket) instead of a traditional print server like CUPS.

When a report is printed, the module encodes the rendered PDF in Base64
and sends a ``print_job`` message through the bus to the user configured
on the printer. A client-side listener running as that user receives
the payload and forwards it to the local printer.

Main features:

- No external print server required — works over the existing Odoo Bus.
- Sends print jobs as Base64-encoded PDFs via WebSocket.
- Each printer is bound to a specific Odoo user, so jobs are delivered
  only to the right client-side agent.
- Compatible with the standard *base_report_to_printer* configuration
  (global, per user, per report, per user + report).
- Works with `odoo-print-client <https://pypi.org/project/odoo-print-client/>`_
  as the client-side agent to receive and print jobs.

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
printing_printer_view_form_inherit_websocket printing.printer.form (in base_report_to_printer_websocket) printing.printer group Inherits base_report_to_printer.printing_printer_view_form
Models touched (2)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • backend Selection
    ondelete={'websocket': 'cascade'} selection_add=[('websocket', 'WebSocket')]
  • websocket_user_id Many2one → res.users
    args: 'res.users'
Public methods (1)
  • print_document(self, report, content, action=None, doc_format='qweb-pdf', **kwargs)
STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/report-print-send
PULL REQUEST
PULL REQUEST[18.0][MIG] base_report_to_printer_websocket (#457)