2
0
mirror of https://github.com/inventree/inventree-website.git synced 2025-06-12 10:05:36 +00:00
This commit is contained in:
matmair
2023-07-26 22:04:19 +00:00
parent 4c9e7db2cf
commit 1460426e77
15 changed files with 53 additions and 53 deletions

View File

@ -31,11 +31,11 @@
<meta property="og:url" content="/SergeoLacruz/inventree-zebra-plugin" />
<meta property="og:site_name" content="InvenTree" />
<meta property="og:type" content="article" />
<meta property="article:published_time" content="2023-07-26T01:04:04+00:00" />
<meta property="article:published_time" content="2023-07-26T22:03:50+00:00" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Inventree Zebra Plugin" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"SergeoLacruz"},"dateModified":"2023-07-26T01:04:04+00:00","datePublished":"2023-07-26T01:04:04+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"}</script>
{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"SergeoLacruz"},"dateModified":"2023-07-26T22:03:50+00:00","datePublished":"2023-07-26T22:03:50+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"}</script>
<!-- End Jekyll SEO tag -->
<script async defer src="https://umami.invenhost.com/umami.js" data-website-id="c713a5e9-25cf-4bb6-9e84-ceb041a53986" data-do-not-track="true"></script>
@ -114,12 +114,12 @@ for the IP connection to the printer.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">class</span> <span class="nc">ZebraLabelPlugin</span><span class="p">(</span><span class="n">LabelPrintingMixin</span><span class="p">,</span> <span class="n">SettingsMixin</span><span class="p">,</span> <span class="n">IntegrationPluginBase</span><span class="p">):</span>
<span class="n">AUTHOR</span> <span class="o">=</span> <span class="s">"Michael Buchmann"</span>
<span class="n">DESCRIPTION</span> <span class="o">=</span> <span class="s">"Label printing plugin for Zebra printers"</span>
<span class="n">AUTHOR</span> <span class="o">=</span> <span class="sh">"</span><span class="s">Michael Buchmann</span><span class="sh">"</span>
<span class="n">DESCRIPTION</span> <span class="o">=</span> <span class="sh">"</span><span class="s">Label printing plugin for Zebra printers</span><span class="sh">"</span>
<span class="n">VERSION</span> <span class="o">=</span> <span class="n">ZEBRA_PLUGIN_VERSION</span>
<span class="n">NAME</span> <span class="o">=</span> <span class="s">"Zebra"</span>
<span class="n">SLUG</span> <span class="o">=</span> <span class="s">"zebra"</span>
<span class="n">TITLE</span> <span class="o">=</span> <span class="s">"Zebra Label Printer"</span>
<span class="n">NAME</span> <span class="o">=</span> <span class="sh">"</span><span class="s">Zebra</span><span class="sh">"</span>
<span class="n">SLUG</span> <span class="o">=</span> <span class="sh">"</span><span class="s">zebra</span><span class="sh">"</span>
<span class="n">TITLE</span> <span class="o">=</span> <span class="sh">"</span><span class="s">Zebra Label Printer</span><span class="sh">"</span>
</code></pre></div></div>
<p>The name of the class can be freely chosen. You reference to it in the entry_points section of the setup.py file.
@ -131,16 +131,16 @@ need to be like that. The values are found in the UI as shown in the pictures be
<p>Then we add the configuration parameters.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">SETTINGS</span> <span class="o">=</span> <span class="p">{</span>
<span class="s">'CONNECTION'</span><span class="p">:</span> <span class="p">{</span>
<span class="s">'name'</span><span class="p">:</span> <span class="nf">_</span><span class="p">(</span><span class="s">'Printer Interface'</span><span class="p">),</span>
<span class="s">'description'</span><span class="p">:</span> <span class="nf">_</span><span class="p">(</span><span class="s">'Select local or network printer'</span><span class="p">),</span>
<span class="s">'choices'</span><span class="p">:</span> <span class="p">[(</span><span class="s">'local'</span><span class="p">,</span><span class="s">'Local printer e.g. USB'</span><span class="p">),(</span><span class="s">'network'</span><span class="p">,</span><span class="s">'Network printer with IP address'</span><span class="p">)],</span>
<span class="s">'default'</span><span class="p">:</span> <span class="s">'local'</span><span class="p">,</span>
<span class="sh">'</span><span class="s">CONNECTION</span><span class="sh">'</span><span class="p">:</span> <span class="p">{</span>
<span class="sh">'</span><span class="s">name</span><span class="sh">'</span><span class="p">:</span> <span class="nf">_</span><span class="p">(</span><span class="sh">'</span><span class="s">Printer Interface</span><span class="sh">'</span><span class="p">),</span>
<span class="sh">'</span><span class="s">description</span><span class="sh">'</span><span class="p">:</span> <span class="nf">_</span><span class="p">(</span><span class="sh">'</span><span class="s">Select local or network printer</span><span class="sh">'</span><span class="p">),</span>
<span class="sh">'</span><span class="s">choices</span><span class="sh">'</span><span class="p">:</span> <span class="p">[(</span><span class="sh">'</span><span class="s">local</span><span class="sh">'</span><span class="p">,</span><span class="sh">'</span><span class="s">Local printer e.g. USB</span><span class="sh">'</span><span class="p">),(</span><span class="sh">'</span><span class="s">network</span><span class="sh">'</span><span class="p">,</span><span class="sh">'</span><span class="s">Network printer with IP address</span><span class="sh">'</span><span class="p">)],</span>
<span class="sh">'</span><span class="s">default</span><span class="sh">'</span><span class="p">:</span> <span class="sh">'</span><span class="s">local</span><span class="sh">'</span><span class="p">,</span>
<span class="p">},</span>
<span class="s">'PORT'</span><span class="p">:</span> <span class="p">{</span>
<span class="s">'name'</span><span class="p">:</span> <span class="nf">_</span><span class="p">(</span><span class="s">'Port'</span><span class="p">),</span>
<span class="s">'description'</span><span class="p">:</span> <span class="nf">_</span><span class="p">(</span><span class="s">'Network port in case of network printer'</span><span class="p">),</span>
<span class="s">'default'</span><span class="p">:</span> <span class="s">'9100'</span><span class="p">,</span>
<span class="sh">'</span><span class="s">PORT</span><span class="sh">'</span><span class="p">:</span> <span class="p">{</span>
<span class="sh">'</span><span class="s">name</span><span class="sh">'</span><span class="p">:</span> <span class="nf">_</span><span class="p">(</span><span class="sh">'</span><span class="s">Port</span><span class="sh">'</span><span class="p">),</span>
<span class="sh">'</span><span class="s">description</span><span class="sh">'</span><span class="p">:</span> <span class="nf">_</span><span class="p">(</span><span class="sh">'</span><span class="s">Network port in case of network printer</span><span class="sh">'</span><span class="p">),</span>
<span class="sh">'</span><span class="s">default</span><span class="sh">'</span><span class="p">:</span> <span class="sh">'</span><span class="s">9100</span><span class="sh">'</span><span class="p">,</span>
<span class="p">},</span>
<span class="p">}</span>
@ -171,7 +171,7 @@ After that we need to define a function:</p>
The PIL object is a greyscale image. Because the printer can just print pure BW we convert this to a BW picture.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">fn</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">x</span> <span class="p">:</span> <span class="mi">255</span> <span class="k">if</span> <span class="n">x</span> <span class="o">&gt;</span> <span class="n">Threshold</span> <span class="k">else</span> <span class="mi">0</span>
<span class="n">label_image</span> <span class="o">=</span> <span class="n">label_image</span><span class="p">.</span><span class="nf">convert</span><span class="p">(</span><span class="s">'L'</span><span class="p">).</span><span class="nf">point</span><span class="p">(</span><span class="n">fn</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s">'1'</span><span class="p">)</span>
<span class="n">label_image</span> <span class="o">=</span> <span class="n">label_image</span><span class="p">.</span><span class="nf">convert</span><span class="p">(</span><span class="sh">'</span><span class="s">L</span><span class="sh">'</span><span class="p">).</span><span class="nf">point</span><span class="p">(</span><span class="n">fn</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="sh">'</span><span class="s">1</span><span class="sh">'</span><span class="p">)</span>
</code></pre></div></div>
<p>The threshold can by modified by a plugin parameter. 200 is a good starting value. This trick gives much better prints.