Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Printer
  3. Direct Print PDF - Client Polling v 18.0
  4. Sales Conditions FAQ

Direct Print PDF - Client Polling

by okkype@gmail.com https://linkedin.com/in/okky-permana-sihipo
Odoo

$ 49.35

v 18.0 Third Party
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Availability
Odoo Online
Odoo.sh
On Premise
Lines of code 1848
Technical Name direct_print_ok
LicenseOPL-1
Websitehttps://linkedin.com/in/okky-permana-sihipo
Versions 16.0 17.0 18.0 19.0
You bought this module and need support? Click here!
  • Description
  • License

🖨️ Direct Print PDF & Dot Matrix Client

Automated, Silent Background Printing from Odoo Without Browser Dialogs

Direct Print Client Main Window

✨ Core Module Capabilities

⚡ Zero-Click Printing

Bypass the browser download step and standard print dialog completely. Jobs are processed silently in the background.

🖥️ Cross-Platform GUI

Lightweight client program built in Python, fully compatible with Windows and Linux workstation terminals.

🔌 Epson & Dot Matrix Optimizations

Modes to render vector PDFs, text streams (RAW), or monochrome raster images formatted specifically for Dot Matrix printers.

🔒 Secure Offline Queue

Secure client-pull model requires no external incoming NAT/port configuration. Print jobs are deleted immediately after spooling.

⚙️ Architecture & Print Flow

The module links Odoo's QWeb reporting engine directly with local desktop hardware:

  1. Print Triggered: A user clicks a report action (like printing an Invoice or Pick List) from the Odoo backend interface.
  2. Queue Hook: Odoo's ir.actions.report intercepts the call, renders the PDF, and places the base64-encoded file inside a database print queue (ir.actions.report.queue) tagged with the target Device ID.
  3. Client Polling: The Python client runs locally on the terminal computer and queries the secure endpoint /report/direct/<unique_id> at a set interval.
  4. Spool & Cleanup: The client retrieves the base64 data, decodes it, formats the printer-specific commands (such as converting vector PDF elements to 1-bit monochrome grids), spools it to the printer queue, and Odoo unlinks the queue entry immediately.
Odoo Backend Printer Connection Configuration

📦 Odoo Server-Side Configuration Manual

Our Direct Print engine inherits three key core components within the Odoo backend.

1. Report Settings (ir.actions.report)

Every report has a new Print tab containing print routing settings (only visible for qweb-pdf reports):

  • Default Behavior:
    • Send to Client: Standard PDF download in browser.
    • Open Print Dialog: Automatically prompts browser printing window.
    • Queued to Hook: Silent printing. Pushes the rendered PDF directly to the database spool queue instead of downloading.
  • Printer Unique IDs: Link specific physical station IDs (e.g. DEV-19472) to this report. Under each ID, you can specify one or more Odoo Users. If specified, only print commands triggered by those users are routed to that printer; if left empty, the queue is shared.
  • Report Queue: Displays currently queued pending jobs for this report, showing the target Device ID and the base64-encoded document binary.
  • Download Client: A button that triggers a direct download of the Tkinter Python print client (print.py).

2. Paper Format Settings (report.paperformat)

Accessible via Settings > Technical > Paper Formats. The view is extended to include Default Behavior, Printer Unique IDs, and the Download Client button. This enables default print routings mapped to paper dimensions (e.g. formatting a thermal receipt to automatically output to the POS receipt printer).

3. Document Layout (base.document.layout)

Integrates the direct print configuration options directly inside Odoo's Document Layout setup wizard, ensuring printer connections can be quickly mapped during initial company styling.

4. Access & Security Rules

The module exposes secure, public model permissions (via ir.model.access.csv) allowing standard users full read, write, create, and delete actions for queue records (ir.actions.report.queue) and printer IDs (report.paperformat.unique). All print operations run securely over standard HTTP/HTTPS channels.

🖥️ Desktop Client Configuration Guide

The desktop client (located in static/src/exe/print.py) runs a Tkinter GUI and polls Odoo for prints.

Desktop Print Client Configuration Modal

Client Prerequisites & Installation

Ensure Python 3.8+ is installed on the terminal computer. Navigate to the client folder and install libraries via requirements.txt:

pip install -r requirements.txt

Core client dependencies include:

  • requests: Polls Odoo endpoints securely.
  • PyMuPDF (fitz): High-performance PDF processing, text coordinates extraction, and rendering (completely replacing legacy slow packages).
  • Pillow: Handles image pixel maps for print rasterizations.
  • pywin32: Needed only on Windows hosts to interact with the Win32 Print API (win32print).

Interactive GUI Configuration Modal

Launch the client dashboard using python print.py. Click the Configuration button on the top-right to open the modal configurations. Dynamic visibility hiding prevents settings clutter:

Field Label Key Parameter Validation Rule / Notes
Device ID UNIQUE_ID Unique station name. Auto-generated on first boot from registry or machine-id. Matches ID registered in Odoo.
Base URL URL_BASE Endpoint domain. Format: https://erp.company.com/report/direct.
Database DATABASE Optional multi-database routing. Keep blank if your Odoo instance is single-database.
Poll Interval (sec) INTERVAL_SECONDS Polling cycle. Mandated as a positive integer ≥ 1.
Print Mode PRINT_MODE Select pdf (standard office/vector), dotmatrix (low-dpi receipt rendering), or txt (raw plain text).
Orientation PRINT_ORIENTATION Select default, portrait, or landscape (90-degree rotate).
Printer Name WINDOWS_PRINTER_NAME / LINUX_PRINTER_NAME Matches local OS printer names. If empty, the client uses the system's default printer.
PDF Method (Windows) WINDOWS_PDF_PRINT_METHOD Select raw (PCL rendering) or sumatra_pdf (portable silent wrapper execution).
Dot Matrix Settings DOT_MATRIX_LPI / DOT_MATRIX_SCALE Line vertical spacing (usually 6 or 8) and scaling float (default: 0.6) for monospaced printer alignments.
Layout size & Margins PAGE_WIDTH_MM / PAGE_HEIGHT_MM / margins Co-dependency Validation: If any single dimension/margin is filled, then all 6 fields (Width, Height, Top, Bottom, Left, Right) must be filled as valid float values. Or keep all blank for auto-boundary detection.

📞 Premium Technical Support & License

Author: okkype@gmail.com

Website: linkedin.com/in/okky-permana-sihipo

License: OPL-1 (Odoo Proprietary License)

Version: 18.0.0.0.1

Odoo Proprietary License v1.0

This software and associated files (the "Software") may only be used (executed,
modified, executed after modifications) if you have purchased a valid license
from the authors, typically via Odoo Apps, or if you have received a written
agreement from the authors of the Software (see the COPYRIGHT file).

You may develop Odoo modules that use the Software as a library (typically
by depending on it, importing it and using its resources), but without copying
any source code or material from the Software. You may distribute those
modules under the license of your choice, provided that this license is
compatible with the terms of the Odoo Proprietary License (For example:
LGPL, MIT, or proprietary licenses similar to this one).

It is forbidden to publish, distribute, sublicense, or sell copies of the Software
or modified copies of the Software.

The above copyright notice and this permission notice must be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author or have a question related to your purchase, please use the support page.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with