This module extends the Report to printer (base_report_to_printer) module to add a ZPL II label printing feature.
This module is meant to be used as a base for module development, and does not provide a GUI on its own. See below for more details.
auto_awesome What this module does
AI-generated from the code · Odoo 19.0Lets you design ZPL II labels (text, barcodes, shapes, images) for any Odoo model and print them on Zebra printers, with a preview via the Labelary service and an import tool for existing ZPL code.
This module adds a label designer for Zebra (ZPL II) printers. It is a technical base module: it adds a "ZPL II Labels" menu under the printer menu, where you create labels linked to an Odoo model (for example products or stock lots).
On each label you set the label width and origin point, and you add components: text, rectangles/lines, diagonal lines, circles, images, many barcode types (Code 11, Interleaved 2 of 5, Code 39, Code 49, PDF417, EAN-8, UPC-E, Code 128, EAN-13, QR Code), raw ZPL2 code, or another label used as a sublabel. Each component has its own position, size, font, orientation, colour and barcode options. Data can be typed manually, computed with a Python expression using the record's fields, or auto-filled. Components can be repeated with an offset, and a check prevents recursive labels.
A "Print Label" wizard is available on records of the chosen model: you pick a printer and a label and print one label per selected record. Labels can also be tested directly from the label form, either on a real printer or as an image generated by the Labelary online service. A separate wizard imports existing ZPL2 code into a label, optionally deleting current components.
Depends on
Menus it adds
Models and fields (5)
- wizard.import.zpl2 · new modeldata, label_id (Label), delete_component (Delete existing components)
- printing.label.zpl2 · new modelname, extra, width, active, model_id (Model), origin_x, origin_y, record_id (Record ID), printer_id (Printer), description, component_ids (Label Components), labelary_dpmm (Print density), labelary_image (Image from Labelary), labelary_width (Width in mm), labelary_height (Height in mm), test_print_mode (Mode Print), action_window_id (Action), test_labelary_mode (Mode Labelary), restore_saved_config (Restore printer's configuration)
- wizard.print.record.label · new modelmodel (Model Name), label_id (Label), line_ids, printer_id (Printer), active_model_id (Model)
- printing.label.zpl2.component · new modeldata, font, name, color, model, width, height, repeat (Repeatable), in_block, label_id (Label), model_id (Record's model), origin_x, origin_y, rounding, sequence, truncate, thickness, mask_value, rows_count, block_lines, block_width, orientation, sublabel_id (Sublabel), block_spaces, check_digits, module_width, repeat_count, block_justify (Justify), columns_count, data_autofill (Autofill Data)
- wizard.print.record.label.line · new modellabel_no (# labels), label_header_id
Text generated by AI (DeepSeek) from reading the Odoo 19.0 code on GitHub; it may contain mistakes, so check the code before deciding. The module is very large and only part of the code was read. View the code on GitHub
Availability by version
Reviewed: 2026-11-03Confirmation status: 8 confirmed, 1 with no information of 9 versions.
Sources · Odoo 19.0
Confirmed on 2026-11-03 in branch 19.0 of OCA/report-print-send.
terminal Installation and usage
OCA documentation · Odoo 19.0Installation
Source · Odoo 19.0Nothing special, just install the module.
Configuration
Source · Odoo 19.0To configure this module, you need to:
- Go to Settings \> Printing \> Labels \> ZPL II
- Create new labels
- Import ZPL2 code
- Use the Test Mode tab during the creation
It's also possible to add a label printing wizard on any model by creating a new ir.actions.act_window record. For example, to add the printing wizard on the product.product model :
Usage
Source · Odoo 19.0To print a label, you need to call use the label printing method from anywhere (other modules, server actions, etc.).
Example : Print the label of a product :
self.env['printing.label.zpl2'].browse(label_id).print_label( self.env['printing.printer'].browse(printer_id), self.env['product.product'].browse(product_id))
You can also use the generic label printing wizard, if added on some models.
[](https://runbot.odoo-community.org/runbot/144/12.0)
Installation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.
Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.