PrintNode Direct Print PRO¶
Overview¶
The Odoo Direct Print PRO module enables direct printing from Odoo to any local, Wi-Fi, or Bluetooth printer without downloading PDF or ZPL files. It uses the PrintNode cloud printing service to route print jobs from your Odoo instance to physical printers connected anywhere in your network.
Key capabilities:
- Direct Printing -- Send reports, shipping labels, and documents directly to printers without browser download dialogs.
- ZPL Support -- Print ZPL labels directly to Zebra and other thermal printers.
- Automatic Print Workflows -- Define scenarios that trigger printing automatically on business events (e.g., print packing slip when a delivery order is validated).
- Shipping Label Printing -- Automatically print shipping labels from carriers like UPS, FedEx, and USPS as soon as they are generated.
- Workstation Support -- Assign default printers per physical workstation for multi-user warehouse environments.
- Scales Integration -- Connect USB/Bluetooth scales for automatic weight capture during shipping.
| Module | printnode_base |
| Version | 18.0.1.0.0 |
| Category | Tools |
| License | OPL-1 |
| Author | VentorTech |
Installation & Dependencies¶
Odoo Module Dependencies¶
| Module | Purpose |
|---|---|
web |
Core web framework |
account |
Invoice printing support |
stock |
Warehouse operations and delivery order printing |
delivery |
Shipping carrier integration for label printing |
stock_delivery |
Stock-delivery bridge |
sale |
Sale order document printing |
purchase |
Purchase order document printing |
Installation Steps¶
- Copy the
printnode_basefolder into your Odoo custom addons directory. - Navigate to Settings > Apps > Update Apps List.
- Search for Odoo Direct Print PRO and click Install.
- After installation, navigate to Direct Print > Settings to configure your account.
PrintNode Account Setup¶
Getting an API Key¶
- Sign up for a PrintNode account at printnode.com or through the Direct Print Client service.
- After registration, navigate to your account settings and generate an API Key.
- Copy the API key -- you will enter it in Odoo.
Configuring the Account in Odoo¶
- Navigate to Direct Print > Settings.
- Enter your API Key in the DPC API Key field.
- Click Save. The module automatically:
- Validates the API key against the PrintNode service.
- Imports all connected computers, printers, and scales.
- Displays the account status as "OK" if successful.
Account Status¶
The account status is displayed on the settings page:
| Status | Meaning |
|---|---|
| OK | API key is valid and the account is active |
| Error message | Connection issue or invalid API key -- details shown in the status field |
Print Limits¶
The module tracks your printing usage:
- Printed Pages -- Total pages printed through the account.
- Plan Page Limits -- Maximum pages allowed on your current plan.
- Notification Email -- Set an email address to receive alerts when approaching the page limit.
- Notification Page Limit -- Threshold (remaining pages) that triggers the notification.
Printer Configuration¶
Importing Printers¶
Printers are automatically imported when you set up your account. To refresh the printer list:
- Navigate to Direct Print > Settings.
- Click Import Printers & Scales.
The module discovers all printers connected to computers running the PrintNode client software, including:
- Local USB and parallel port printers
- Network printers (Wi-Fi, Ethernet)
- Bluetooth printers
- Virtual printers (PDF writers, etc.)
Printer Properties¶
Each printer record in Odoo includes:
| Field | Description |
|---|---|
| Name | Printer name as reported by PrintNode |
| Computer | The computer this printer is connected to |
| Status | Current printer status (online/offline) |
| Supported Papers | Paper sizes the printer accepts |
| Supported Formats | Report formats the printer can handle (PDF, raw text) |
| Default Paper | Default paper size for this printer |
| Default Bin | Default paper tray/bin for multi-tray printers |
Printer Status¶
A printer is considered online when both conditions are met:
- The printer status is "online"
- The parent computer status is "connected"
Setting Default Printers¶
Default printers can be configured at multiple levels (in order of priority):
- Scenario Level -- Each print scenario can specify its own printer.
- User Rules -- Per-user printer assignments for specific reports.
- User Level -- A default printer set on the user's preferences.
- Company Level -- A fallback default printer for the entire company.
Navigate to Direct Print > Settings to set the company-level defaults:
| Setting | Description |
|---|---|
| Default Printer | Company-wide default printer for reports |
| Shipping Label Printer | Dedicated printer for shipping labels |
Clearing Stale Devices¶
If printers have been removed from your network but still appear in Odoo:
- Navigate to Direct Print > Settings.
- Click Clear Devices from Odoo.
- The module compares Odoo records against the PrintNode API and removes any printers or computers that no longer exist.
Direct Print Setup¶
Enabling Direct Printing¶
- Navigate to Direct Print > Settings.
- Enable the Enable Direct Printing checkbox.
- Assign a Default Printer for the company.
- Ensure each user who needs printing has their PrintNode Enabled checkbox set in their user preferences.
Printing Formats¶
The module supports multiple output formats:
| Format | Use Case |
|---|---|
| PDF (qweb-pdf) | Standard reports, packing slips, invoices |
| Raw Text (qweb-text) | ZPL labels, raw text documents |
| py3o | py3o-based report templates |
ZPL Label Printing¶
For thermal label printers using ZPL:
- Create a report with type
qweb-textthat outputs ZPL code. - Assign a ZPL-capable printer (e.g., Zebra) as the target printer.
- The module sends the raw ZPL content directly to the printer, bypassing PDF rendering.
PDF Label Printing¶
For standard label printers:
- Use
qweb-pdfreport type for your label template. - The module converts the PDF to base64 and sends it to PrintNode.
- PrintNode renders and prints the PDF on the target printer.
Report Policies¶
Fine-tune printing behavior per report at Direct Print > Report Settings:
| Option | Description |
|---|---|
| Report Type | Override the detected report format |
| Paper Size | Set a specific paper size for this report |
| Exclude from Auto Printing | Prevent this report from being automatically printed by scenarios |
Printer Compatibility Checks¶
The module validates printer-report compatibility before sending print jobs:
- Paper Size Match -- If the printer has paper sizes configured, the report's paper size must be in the allowed list.
- Format Match -- If the printer has format restrictions, the report type must be compatible.
- Printer Online Check -- When "Mandatory check Printing Status" is enabled, the module verifies the printer is online before sending the job.
Shipping Label Printing¶
Automatic Shipping Label Printing¶
The module integrates with Odoo's shipping carrier system to automatically print labels when they are generated:
- Navigate to Direct Print > Settings.
- Enable Auto-send to Shipping Label Printer.
- Set the Shipping Label Printer at the company level (or per user/workstation).
When a delivery order calls Send to Shipper:
- The carrier generates the label (e.g., UPS, FedEx, ShipStation).
- The module intercepts the label attachment.
- The label is automatically sent to the configured shipping label printer.
Shipping Label Records¶
The module creates shipping.label records for each generated label, tracking:
- Carrier and delivery order
- Tracking numbers
- Individual label documents (with package association)
- Return label documents
- Active/inactive status (labels are deactivated when shipments are cancelled)
Print Options for Shipping Labels¶
| Setting | Description |
|---|---|
| Auto-send to Shipping Label Printer | Automatically print labels when generated |
| Use Attachments Printing for Shipping Labels | Print labels from message attachments instead of shipping label records |
| Print Package just after Shipping Label | Automatically print a package slip after each shipping label |
| Package Report to Print | The package report used when printing package slips with labels |
Paper Format
Set the Autoprint Paper Format on each delivery carrier to match your label printer's paper size (e.g., 4x6 for shipping labels).
Automatic Print Workflows (Scenarios)¶
Scenarios define rules that trigger automatic printing when specific business events occur in Odoo.
Managing Scenarios¶
Navigate to Direct Print > Scenarios to view and configure print scenarios.
Each scenario consists of:
| Field | Description |
|---|---|
| Print Scenario Action | The business event that triggers printing |
| Report | The report to print when the event fires |
| Printer | The target printer (optional -- falls back to user/company default) |
| Printer Bin | Specific paper tray to use |
| Number of Copies | How many copies to print |
| Domain | A filter to restrict which records trigger the scenario |
Available Scenario Actions¶
The module ships with pre-configured actions for common warehouse and sales events:
Delivery & Warehouse:
- Print document on transfer validation
- Print document on backorder creation
- Print document on picking status change
- Print shipping labels on transfer
- Print product labels on transfer (single or multiple per quantity)
- Print product labels based on packaging quantity
- Print lot/serial labels on transfer (single or multiple)
- Print lot labels based on packaging quantity
- Print package labels on transfer
- Print package on "Put in Pack"
- Print operations document on transfer
Sales & Purchasing:
- Print document on sale order confirmation
- Print document on purchase order confirmation
Domain Filtering¶
Each scenario includes a Domain field that lets you restrict when the scenario fires. For example, to only print labels for outgoing shipments from a specific warehouse:
[("picking_type_id.warehouse_id.name", "=", "Main Warehouse")]
Click the Edit Domain button on a scenario to open the visual domain editor.
Scenario Execution Flow¶
- A business event occurs (e.g., a delivery order is validated).
- The module searches for active scenarios matching the event action.
- For each matching scenario, the domain filter is applied to the affected records.
- If records pass the domain filter, the configured report is sent to the resolved printer.
- Records are marked as
printnode_printedto avoid duplicate printing.
Printer Resolution Order¶
When a scenario fires, the printer is determined by:
- The printer set directly on the scenario
- User-level report rules (per-report printer assignments)
- The user's default printer
- The company's default printer
If no printer can be resolved at any level, the scenario raises an error.
Workstation Configuration¶
Workstations allow you to assign default devices (printers, label printers, scales) to physical locations in your warehouse.
Setting Up Workstations¶
- Navigate to Direct Print > Workstations.
- Create a workstation for each physical location (e.g., "Packing Station 1", "Shipping Desk").
- Assign:
- Default Workstation Printer -- For reports and documents
- Default Workstation Shipping Label Printer -- For shipping labels
- Default Workstation Scales -- For weight capture
Using Workstations¶
Users select their current workstation when they log in or switch locations. The workstation's default devices override user-level and company-level defaults, ensuring the right printer is always used regardless of who is logged in.
Scales Integration¶
Connecting Scales¶
The module supports USB and Bluetooth scales connected to computers running the PrintNode client:
- Connect your scale to a computer with the PrintNode client installed.
- In Odoo, navigate to Direct Print > Settings.
- Click Import Printers & Scales to discover connected scales.
- Enable Scales Integration and select the Default Scales.
Scales Configuration¶
| Setting | Description |
|---|---|
| Enable Scales Integration | Activate scale reading in the interface |
| Default Scales | The default scale device for weight capture |
| Picking Criteria for Auto-Weighing | Domain filter to control which pickings trigger auto-weighing (default: outgoing transfers) |
Debug Mode for Scales¶
For testing without physical scales:
- Click Enable Scales Debug Mode in settings.
- A test computer and test scale are created.
- Use Generate Test Measurement to simulate weight readings.
- Click Disable Scales Debug Mode when finished.
User Configuration¶
Per-User Settings¶
Each user can configure their own printing preferences at Settings > Users > [User] > Preferences:
| Setting | Description |
|---|---|
| PrintNode Enabled | Enable/disable direct printing for this user |
| Default Printer | User's default printer for reports |
| Shipping Label Printer | User's default printer for shipping labels |
User Print Rules¶
For fine-grained control, create per-user printer rules that assign specific printers to specific reports. Navigate to Direct Print > User Rules to manage these assignments.
Action Buttons¶
The module adds Print buttons throughout the Odoo interface for on-demand direct printing:
- Delivery Orders -- Print shipping labels, packing slips, and operation reports
- Sale Orders -- Print order confirmations and quotations
- Purchase Orders -- Print purchase order documents
- Invoices -- Print invoice documents
- Products -- Print product labels
These buttons send the document directly to the user's configured printer without downloading a file.
Secure Printing¶
Enable Secure Printing in settings to prevent document content from being transmitted directly to PrintNode. Instead:
- The document is stored as a print job in Odoo.
- A signed URL with an expiration timestamp is generated.
- PrintNode fetches the document from Odoo using the signed URL.
- The URL expires after the configured lifespan, preventing unauthorized access.
This mode is recommended for environments handling sensitive documents.
Logging¶
Debug Logging¶
Enable debug logging at Direct Print > Settings:
- Toggle Debug Logging on.
- Select the Log Types to capture:
- Requests -- API calls to/from PrintNode
- Reports -- Report generation and printer checks
- Scenarios -- Scenario execution flow
View logs at Direct Print > Logging.
Log Types¶
| Type | What It Captures |
|---|---|
| Requests | All HTTP requests to the PrintNode API, including payloads and responses |
| Reports | Report rendering, printer compatibility checks, and format validation |
| Scenarios | Scenario matching, domain filtering, printer resolution, and print execution |
Troubleshooting¶
Printer Not Appearing¶
Printer not found after import
Symptom: Your printer does not appear in the Odoo printer list after importing devices.
Resolution:
- Verify the PrintNode client software is installed and running on the computer connected to the printer.
- Check that the printer appears in the PrintNode web dashboard at app.printnode.com.
- Click Import Printers & Scales in Direct Print settings to refresh.
- If the printer was recently added, it may take a moment for PrintNode to detect it.
Printer Shows as Offline¶
Printer is not available
Symptom: The printer exists in Odoo but shows as offline.
Resolution:
- Ensure the PrintNode client is running on the printer's computer (check the system tray icon).
- Verify the computer shows as "connected" in the PrintNode web dashboard.
- Check that the printer is powered on and not in an error state.
- Disable Mandatory check Printing Status in settings if the status check is causing false negatives.
Print Job Sent but Nothing Prints¶
Job created but no output
Symptom: The print job is created in Odoo and sent to PrintNode, but nothing comes out of the printer.
Resolution:
- Check the print job status in the PrintNode web dashboard.
- Verify the document format matches what the printer supports (e.g., do not send raw ZPL to a PDF-only printer).
- Check paper size compatibility -- if the printer has paper restrictions configured in Odoo, ensure the report paper size matches.
- Review the Direct Print logs (Direct Print > Logging) for error messages.
Shipping Labels Not Auto-Printing¶
Labels generated but not printed
Symptom: Shipping labels are generated by the carrier but do not automatically print.
Resolution:
- Verify Auto-send to Shipping Label Printer is enabled in Direct Print settings.
- Ensure a Shipping Label Printer is configured at the company, user, or workstation level.
- Confirm the user has PrintNode Enabled in their preferences.
- Check that the user belongs to the Direct Print User security group.
- Verify the delivery carrier has an Autoprint Paper Format set.
Scenario Not Firing¶
Automatic print scenario does not trigger
Symptom: A scenario is configured but does not print when the expected event occurs.
Resolution:
- Confirm the scenario is Active.
- Verify the scenario's Domain does not filter out the records.
- Check that the user has PrintNode Enabled and belongs to the Direct Print User group.
- If running from a cron job, ensure Allow to execute printing scenarios from crons is enabled in settings.
- Review the scenario log at Direct Print > Logging with the "Scenarios" log type enabled.
API Key Errors¶
Wrong API Key provided
Symptom: Error when activating the account or importing devices.
Resolution:
- Double-check the API key was copied correctly (no leading/trailing spaces).
- Verify the API key is active in your PrintNode or Direct Print Client account.
- If you changed the API key, the module automatically re-activates -- check the status field for specific error details.
Paper/Format Mismatch¶
Paper size or report type do not match
Symptom: Error about paper size or report format mismatch when printing.
Resolution:
- Navigate to Direct Print > Printers and check the printer's Supported Papers and Supported Formats.
- Navigate to Direct Print > Report Settings and verify the report's paper size and type.
- Either update the printer's allowed papers/formats or change the report settings to match.
- If the printer should accept any format, clear the papers and formats restrictions on the printer record.