diff --git a/LavissaWoW.html b/LavissaWoW.html index 80112065..3e83a7e9 100644 --- a/LavissaWoW.html +++ b/LavissaWoW.html @@ -30,11 +30,11 @@ - + +{"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2025-02-03T11:33:13+00:00","datePublished":"2025-02-03T11:33:13+00:00","description":"Yes, WoW is for World of Warcraft","headline":"Lavissawow","mainEntityOfPage":{"@type":"WebPage","@id":"/LavissaWoW"},"url":"/LavissaWoW"} diff --git a/LavissaWoW/inventree-ipn-generator.html b/LavissaWoW/inventree-ipn-generator.html index 295e1093..97a8c6e2 100644 --- a/LavissaWoW/inventree-ipn-generator.html +++ b/LavissaWoW/inventree-ipn-generator.html @@ -31,11 +31,11 @@ - + +{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"LavissaWoW"},"dateModified":"2025-02-03T11:33:13+00:00","datePublished":"2025-02-03T11:33:13+00:00","description":"Introduction Installing this plugin enables the automatic generation if Internal Part Numbers (IPN) for parts.","headline":"Inventree Ipn Generator","mainEntityOfPage":{"@type":"WebPage","@id":"/LavissaWoW/inventree-ipn-generator"},"url":"/LavissaWoW/inventree-ipn-generator"} diff --git a/SchrodingersGat/inventree-brother-plugin.html b/SchrodingersGat/inventree-brother-plugin.html index 327df0a5..3030306b 100644 --- a/SchrodingersGat/inventree-brother-plugin.html +++ b/SchrodingersGat/inventree-brother-plugin.html @@ -31,11 +31,11 @@ - + +{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"SchrodingersGat"},"dateModified":"2025-02-03T11:33:13+00:00","datePublished":"2025-02-03T11:33:13+00:00","description":"Brother label printer plugin for InvenTree","headline":"Inventree Brother Plugin","mainEntityOfPage":{"@type":"WebPage","@id":"/SchrodingersGat/inventree-brother-plugin"},"url":"/SchrodingersGat/inventree-brother-plugin"} diff --git a/SchrodingersGat/inventree-order-history.html b/SchrodingersGat/inventree-order-history.html index a24388bf..4dc57fe5 100644 --- a/SchrodingersGat/inventree-order-history.html +++ b/SchrodingersGat/inventree-order-history.html @@ -31,11 +31,11 @@ - + +{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"SchrodingersGat"},"dateModified":"2025-02-03T11:33:13+00:00","datePublished":"2025-02-03T11:33:13+00:00","description":"Order History for InvenTree","headline":"Inventree Order History","mainEntityOfPage":{"@type":"WebPage","@id":"/SchrodingersGat/inventree-order-history"},"url":"/SchrodingersGat/inventree-order-history"} diff --git a/SchrodingersGat/inventree-test-statistics.html b/SchrodingersGat/inventree-test-statistics.html index 2dda57bf..18a63ade 100644 --- a/SchrodingersGat/inventree-test-statistics.html +++ b/SchrodingersGat/inventree-test-statistics.html @@ -31,11 +31,11 @@ - + +{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"SchrodingersGat"},"dateModified":"2025-02-03T11:33:13+00:00","datePublished":"2025-02-03T11:33:13+00:00","description":"Test Statistics for InvenTree","headline":"Inventree Test Statistics","mainEntityOfPage":{"@type":"WebPage","@id":"/SchrodingersGat/inventree-test-statistics"},"url":"/SchrodingersGat/inventree-test-statistics"} diff --git a/SchrodingersGat/inventree-wireviz.html b/SchrodingersGat/inventree-wireviz.html index 6b25d96b..0eb4e641 100644 --- a/SchrodingersGat/inventree-wireviz.html +++ b/SchrodingersGat/inventree-wireviz.html @@ -31,11 +31,11 @@ - + +{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"SchrodingersGat"},"dateModified":"2025-02-03T11:33:13+00:00","datePublished":"2025-02-03T11:33:13+00:00","description":"Wireviz Extension for InvenTree","headline":"Inventree Wireviz","mainEntityOfPage":{"@type":"WebPage","@id":"/SchrodingersGat/inventree-wireviz"},"url":"/SchrodingersGat/inventree-wireviz"} diff --git a/SergeoLacruz.html b/SergeoLacruz.html index 8d7c83b0..62f98ae7 100644 --- a/SergeoLacruz.html +++ b/SergeoLacruz.html @@ -30,11 +30,11 @@ - + +{"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2025-02-03T11:33:13+00:00","datePublished":"2025-02-03T11:33:13+00:00","description":"Hardware engineer in Germany and vintage fan.","headline":"Sergeolacruz","mainEntityOfPage":{"@type":"WebPage","@id":"/SergeoLacruz"},"url":"/SergeoLacruz"} diff --git a/SergeoLacruz/inventree-supplier-panel.html b/SergeoLacruz/inventree-supplier-panel.html index d79cc76b..1b6ff75d 100644 --- a/SergeoLacruz/inventree-supplier-panel.html +++ b/SergeoLacruz/inventree-supplier-panel.html @@ -31,11 +31,11 @@ - + +{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"SergeoLacruz"},"dateModified":"2025-02-03T11:33:13+00:00","datePublished":"2025-02-03T11:33:13+00:00","description":"The InvenTree-supplier-panel","headline":"Inventree Supplier Panel","mainEntityOfPage":{"@type":"WebPage","@id":"/SergeoLacruz/inventree-supplier-panel"},"url":"/SergeoLacruz/inventree-supplier-panel"} diff --git a/SergeoLacruz/inventree-zebra-plugin.html b/SergeoLacruz/inventree-zebra-plugin.html index 380afe1b..74ef8b2d 100644 --- a/SergeoLacruz/inventree-zebra-plugin.html +++ b/SergeoLacruz/inventree-zebra-plugin.html @@ -31,11 +31,11 @@ - + +{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"SergeoLacruz"},"dateModified":"2025-02-03T11:33:13+00:00","datePublished":"2025-02-03T11:33:13+00:00","description":"Zebra Label Printer Plugin for Inventree","headline":"Inventree Zebra Plugin","mainEntityOfPage":{"@type":"WebPage","@id":"/SergeoLacruz/inventree-zebra-plugin"},"url":"/SergeoLacruz/inventree-zebra-plugin"} @@ -77,9 +77,13 @@
Zebra Label Printer Plugin for Inventree
This is a label printing plugin for InvenTree, which provides -support for Zebra Label printers. It was only tested with GK420T but should work for -other ZPL printers too. It uses the ZPL library to convert the png data provided by -InvenTree to Zebra’s bitmap format.
+support for Zebra Label printers. It allows two modes of operation: + +It can output the print data either to a local printer connected to the computer via USB or to a network printer with an IP address. The output can be configured in the @@ -96,7 +100,9 @@ InvenTree plugin user interface.
Here you can chose between Local printer or network printer. Default value is a local printer.
+Here you can chose between local printer, network printer or the labelary.com API. +The last one is useful for preview of labels, especially when ZPL templates are used. +Default value is a local printer.
In case you use an IP printer set the IPv4 address here.
@@ -133,6 +139,9 @@ change it according to your requirements. Please keep in mind that this string is passed directly to the printer without any checks. So be careful when editing here. +Turn this switch on to display a collection of all IP printers below on this page.
+The label needs a template described in html and css. The template should start with a page definition that defines the label size as shown below:
@@ -171,11 +180,104 @@ in another printer.Only the IP address and darkness can be overwritten so far. All other settings remain.
+The InvenTree printer system uses a graphical representation of the label. The label is described +in HTML, converted to a pixel graphic and printed. The advantage is independency from printer +models and systems. Disadvantage is larger data and quality problems with darkness and scaling. +Let’s have a look at the following printout:
+ +Both codes have been printed with the same printer on the same reel. The left one is +hardly readable using my mobile. The right one reads easily even as it is smaller.
+ +The printer resolution is 8 dots per mm resulting in a dot size of 0.125mm. The QR code pixel +and the printer pixel size should be integrally divisible. The code in the picture has 21 +pixels plus one in the frame, so 23 pixel. The frame is set in the HTML description.
+ +{% qrcode qr_data border=1 %}
+
I selected two dots per pixel. So 23 * 2 * 0.125 = 6.125mm. If the size is something different +scaling takes place and the result might be worse. If you like a larger printout select more +dots per pixel. From a certain size upwards the value does not matter any more because the code +gets large enough to be readable in any quality.
+ +Zebra printers allow to set the darkness of the print in values between 0 (white) and 30 (max) +The left code was printed with a value of 30. The black dots tend to blur out a bit resulting +in smaller white areas. The right code was printed with a value of 25 resulting in larger white +pixels. The darkness values are just examples. Your values will differ based on printer model, +media type and printer age. The printer head tends to wear out and the darkness value might +need an adjustment from time to time.
+ +You can also bypass the InvenTree print engine and render the label inside the printer. +The printer knows how to render the label for best quality. Inspired by the +inventree-zpl-plugin inventree-zpl-plugin a similar +function was aded to the zebra printer driver. You can write a ZPL template and upload +it to the InvenTree Label templates as usual. Add a command to the template’s metadata:
+ +{"zpl_template": "True"}
+
In that case the printer driver ignores the picture rendered by WeasyPrint. Instead +it calls the render_to_string function of the template and sends the +result to the printer. The result can look like:
+ +The upper label was created using this template:
+ +
+{% autoescape off %}
+^FT30,25^A0N,18,22^FDIPN^FS
+^FT150,30^FB100,1,,C,,^A0N,24,32^FDACME^FS
+^FT320,25^A0N,18,22^FD{{ item.pk }}^FS
+^FT100,70^FB200,2,,C,,^A0N,18,22^FD{{ part.name }}^FS
+^FT100,100^FB200,1,,C,,^A0N,18,22^FD{{ part.manufacturer_parts.first.manufacturer.name }}^FS
+^FT30,150^FB340,1,,C,,^A0N,30,40^FD{{ part.IPN }}^FS
+^FT20,210^FB360,3,,L,,^A0N,18,22^FD{{ part.description }}^FS
+^FT15,110^BQ,2,3^FDQA,{{ part.IPN }}^FS
+^FT310,130^BQ,2,3^FDQA,{{ qr_data }}^FS
+{% endautoescape %}
+
+
Autoescape must be off. We do not need " and similar escapes here. +Context variables can be used as usual.
+ +!!! warning “Limitation” + ZPL commands starting with backslash like \& cannot be used so far.
+ +The printer driver allows an output device called “preview”. If this is selected +the ZPL code is sent to the API of labelary.com. The API sends back pdf data +which is displayed in a new browser window. This is helpful while writing ZPL +templates but works with HTML templates too. Please be careful and do not send +confidential information to the API.
+ +In case you need to pass a proxy for the POST requests set the environment +variables PROXY_CON and PROXY_URL on the server. The plugin does not have +settings for this.
+ +With the multi printer feature it can happen that you have several printers in +your setup. When the Get Printer Info switch is set ON, the driver calls each printer +once a minute and collects some info about it. It calls the printer configured +in the settings as well as all printers it finds in the label templates. +In case a printer is unreachable, an error message is shown. If a printer is used +in several templates it is listed only once.
+ +The printer info feature works for local USB printers too.
+ +First import all the stuff you need. Here we use the translation mechanism from -Django for multi language support. The import the InvenTree libs and everything -you need for plugin. Here we have ZPL for the Zebra bitmaps and socket for the -IP connection to the printer.
+First import all the stuff you need. Here we use the translation mechanism from Django for multi language support. +The import the InvenTree libs and everything you need for plugin. Here we have ZPL for the Zebra bitmaps and socket +for the IP connection to the printer.
The next part is this:
@@ -184,17 +286,17 @@ IP connection to the printer. AUTHOR = "Michael Buchmann" DESCRIPTION = "Label printing plugin for Zebra printers" VERSION = ZEBRA_PLUGIN_VERSION - NAME = "Zebra" + NAME = "Zebra labels" SLUG = "zebra" TITLE = "Zebra Label Printer" -The name of the class can be freely chosen. You reference to it in the entry_points section of the setup.py file. +
The name of the class can be freely chosen but should be different from SLUG. Otherwise it does not +show up. You reference to it in the entry_points section of the setup.py file. The parameters need to be like in the example. Then there is the description block. The keywords are fixed and -need to be like that. The values are found in the UI as shown in the pictures below.
+need to be like that. The values are found in the UI as shown in the picture below. -
-
Then we add the configuration parameters.
SETTINGS = {
@@ -263,43 +365,7 @@ can be chosen in the InvenTree settings. 800 is a good value because it gives hi
The rest of the code is just output to the printer on different interfaces.
-Quality matters
-The InvenTree printer system uses a graphical representation of the label. The label is described
-in HTML, converted to a pixel graphic and printed. The advantage is independency from printer
-models and systems. Disadvantage is larger data and quality problems with darkness and scaling.
-Let’s have a look at the following printout:
-
-
-
-Both codes have been printed with the same printer on the same reel. The left one is
-hardly readable using my mobile. The right one reads easily even as it is smaller.
-
-Secret 1, Scale
-The printer resolution is 8 dots per mm resulting in a dot size of 0.125mm. The QR code pixel
-and the printer pixel size should be integrally divisible. The code in the picture has 21
-pixels plus one in the frame, so 23 pixel. The frame is set in the HTML description.
-
-{% qrcode qr_data border=1 %}
-
-
-I selected two dots per pixel. So 23 * 2 * 0.125 = 6.125mm. If the size is something different
-scaling takes place and the result might be worse. If you like a larger printout select more
-dots per pixel. From a certain size upwards the value does not matter any more because the code
-gets large enough to be readable in any quality.
-
-Secret 2: Darkness
-Zebra printers allow to set the darkness of the print in values between 0 (white) and 30 (max)
-The left code was printed with a value 0r 30. The black dots tend to blur out a bit resulting
-in smaller white areas. The right code was printed with a value of 25 resulting in larger white
-pixels. The darkness values are just examples. Your values will differ based on printer model,
-media type and printer age. The printer head tends to wear out and the darkness value might
-need an adjustment from time to time.
-
-Alternative
-You can also bypass the InvenTree template and printing system and directly create ZPL from
-the parts data. The printer knows best how to render the label and the print quality is best.
-If you are interested in this way have a look at the inventree-zpl-plugin
-that does exactly that.
+Happy printing.
We have just released version 0.17.1 which includes a number of patches and bug fixes.
diff --git a/extend/app.html b/extend/app.html index 9e87cdea..42d4ec0b 100644 --- a/extend/app.html +++ b/extend/app.html @@ -325,6 +325,8 @@ + + diff --git a/functions.html b/functions.html index 900b8d44..fe952305 100644 --- a/functions.html +++ b/functions.html @@ -234,6 +234,8 @@ + + diff --git a/lippoliv.html b/lippoliv.html index 5089c49d..585290ce 100644 --- a/lippoliv.html +++ b/lippoliv.html @@ -30,11 +30,11 @@ - + +{"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2025-02-03T11:33:13+00:00","datePublished":"2025-02-03T11:33:13+00:00","description":"With over 15 years of experience and big big passion I learned to take care about the details. They build up to the big picture we have in mind. I’m planning ahead & act early to prevent a big bang.","headline":"Lippoliv","mainEntityOfPage":{"@type":"WebPage","@id":"/lippoliv"},"url":"/lippoliv"} diff --git a/lippoliv/inventree-default-salesorder-items.html b/lippoliv/inventree-default-salesorder-items.html index 50a35234..40f4675d 100644 --- a/lippoliv/inventree-default-salesorder-items.html +++ b/lippoliv/inventree-default-salesorder-items.html @@ -31,11 +31,11 @@ - + +{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"lippoliv"},"dateModified":"2025-02-03T11:33:13+00:00","datePublished":"2025-02-03T11:33:13+00:00","description":"Add default parts (configurable) to every newly created sales order automatically.","headline":"Inventree Default Salesorder Items","mainEntityOfPage":{"@type":"WebPage","@id":"/lippoliv/inventree-default-salesorder-items"},"url":"/lippoliv/inventree-default-salesorder-items"} diff --git a/matmair.html b/matmair.html index 3ebcd645..5b142692 100644 --- a/matmair.html +++ b/matmair.html @@ -30,11 +30,11 @@ - + +{"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2025-02-03T11:33:13+00:00","datePublished":"2025-02-03T11:33:13+00:00","description":"I try to build an ecosystem of reusable plugins and integrations for InvenTree. Code once and KISS!","headline":"Matmair","mainEntityOfPage":{"@type":"WebPage","@id":"/matmair"},"url":"/matmair"} diff --git a/matmair/inventree-apprise.html b/matmair/inventree-apprise.html index ed3a3084..ca6e4241 100644 --- a/matmair/inventree-apprise.html +++ b/matmair/inventree-apprise.html @@ -31,11 +31,11 @@ - + +{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"matmair"},"dateModified":"2025-02-03T11:33:13+00:00","datePublished":"2025-02-03T11:33:13+00:00","description":"Send notifications from InvenTree via Apprise","headline":"Inventree Apprise","mainEntityOfPage":{"@type":"WebPage","@id":"/matmair/inventree-apprise"},"url":"/matmair/inventree-apprise"} diff --git a/matmair/inventree-rapidoc.html b/matmair/inventree-rapidoc.html index f403e6d5..6ad6835c 100644 --- a/matmair/inventree-rapidoc.html +++ b/matmair/inventree-rapidoc.html @@ -31,11 +31,11 @@ - + +{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"matmair"},"dateModified":"2025-02-03T11:33:13+00:00","datePublished":"2025-02-03T11:33:13+00:00","description":"Use RapiDoc for Inventree API docs.","headline":"Inventree Rapidoc","mainEntityOfPage":{"@type":"WebPage","@id":"/matmair/inventree-rapidoc"},"url":"/matmair/inventree-rapidoc"} diff --git a/matmair/inventree-zapier.html b/matmair/inventree-zapier.html index 3e18fbbd..115a5afc 100644 --- a/matmair/inventree-zapier.html +++ b/matmair/inventree-zapier.html @@ -31,11 +31,11 @@ - + +{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"matmair"},"dateModified":"2025-02-03T11:33:13+00:00","datePublished":"2025-02-03T11:33:13+00:00","description":"Integrate Zapier into InvenTree","headline":"Inventree Zapier","mainEntityOfPage":{"@type":"WebPage","@id":"/matmair/inventree-zapier"},"url":"/matmair/inventree-zapier"} diff --git a/melektron.html b/melektron.html index 587d6c58..b38c6184 100644 --- a/melektron.html +++ b/melektron.html @@ -30,11 +30,11 @@ - + +{"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2025-02-03T11:33:13+00:00","datePublished":"2025-02-03T11:33:13+00:00","description":"Juggling with bits and bytes for fun and profit ;) (and also electrons if I feel like it)","headline":"Melektron","mainEntityOfPage":{"@type":"WebPage","@id":"/melektron"},"url":"/melektron"} diff --git a/melektron/inventree-adv-sheet-label.html b/melektron/inventree-adv-sheet-label.html index 39716512..54d4cc17 100644 --- a/melektron/inventree-adv-sheet-label.html +++ b/melektron/inventree-adv-sheet-label.html @@ -31,11 +31,11 @@ - + +{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"melektron"},"dateModified":"2025-02-03T11:33:13+00:00","datePublished":"2025-02-03T11:33:13+00:00","description":"A label printing plugin for InvenTree which provides support for printing labels on off-the-shelf label sheet layouts and adds some more useful features compared to the sheet label plugin included with InvenTree.","headline":"Inventree Adv Sheet Label","mainEntityOfPage":{"@type":"WebPage","@id":"/melektron/inventree-adv-sheet-label"},"url":"/melektron/inventree-adv-sheet-label"} diff --git a/news/feed.atom b/news/feed.atom index 19077838..b15e7dde 100644 --- a/news/feed.atom +++ b/news/feed.atom @@ -1,4 +1,4 @@ -We have just released version 0.17.1 which includes a number of bug fixes for the 0.17.x release branch.
diff --git a/piramja.html b/piramja.html index ee8f5e5f..6b021b39 100644 --- a/piramja.html +++ b/piramja.html @@ -30,11 +30,11 @@ - + +{"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2025-02-03T11:33:13+00:00","datePublished":"2025-02-03T11:33:13+00:00","description":"And in the end, we have no choice but to embrace the chaos and laugh about it.","headline":"Piramja","mainEntityOfPage":{"@type":"WebPage","@id":"/piramja"},"url":"/piramja"} diff --git a/piramja/inventree-niimbot-plugin.html b/piramja/inventree-niimbot-plugin.html index 8f163ca4..c6dd6760 100644 --- a/piramja/inventree-niimbot-plugin.html +++ b/piramja/inventree-niimbot-plugin.html @@ -31,11 +31,11 @@ - + +{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"piramja"},"dateModified":"2025-02-03T11:33:13+00:00","datePublished":"2025-02-03T11:33:13+00:00","description":"Introduction A label printing plugin for InvenTree, which provides support for the Niimbot Label Printers. This plugin is based on the amazing work from labbots/NiimPrintX and modifications from LorisPolenz/NiimPrintX.","headline":"Inventree Niimbot Plugin","mainEntityOfPage":{"@type":"WebPage","@id":"/piramja/inventree-niimbot-plugin"},"url":"/piramja/inventree-niimbot-plugin"} diff --git a/schrodingersgat.html b/schrodingersgat.html index 1f4f0998..db58f6d2 100644 --- a/schrodingersgat.html +++ b/schrodingersgat.html @@ -30,11 +30,11 @@ - + +{"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2025-02-03T11:33:13+00:00","datePublished":"2025-02-03T11:33:13+00:00","description":"Maintainer of InvenTree.","headline":"Schrodingersgat","mainEntityOfPage":{"@type":"WebPage","@id":"/schrodingersgat"},"url":"/schrodingersgat"} diff --git a/sitemap.xml b/sitemap.xml index 7cdc303e..e2d3d776 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -182,107 +182,107 @@