Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Printing quality #4

Closed
wolflu05 opened this issue Jan 25, 2024 · 7 comments
Closed

Printing quality #4

wolflu05 opened this issue Jan 25, 2024 · 7 comments

Comments

@wolflu05
Copy link

Hello,

I'm currently using a dymo direct thermal printer for my InvenTree labels, but I'm also planning to buy a Zebra thermal transfer printer. I'm just wondering about the quality. I saw that you have already done some quality tests of the barcode resolution with the Zebra printers and at the end you also mention the alternative native ZPL approach without the html/css template in between.

I would be interested to know whether you have tested both variants and noticed any differences in quality, or whether the HTML/CSS label template variant with the correct QR code scaling delivers just as good results as the native ZPL variant?

I am also wondering to what extent smaller labels work for the Zebra printers, because with these there are always 4 labels next to each other on the roll, which means I would always have to print 4 labels at once to get a label. Is it also possible to print such labels with ZPL? Do one then create a label that stretches over all 4 and then only use the places where the individual labels are located?

Best,
Lukas

@SergeoLacruz
Copy link
Owner

We only use the css approach in Inventree. It gives good results when the scaling is properly set as described. We use the ZPL direct approach in other systems e.g. asset management. Creating label template is easier when you know ZPL and work with the Zebra label designer. Finally the quality is the same. I have two printers on Inventree. One is from 2014 and has printed a lot. the QR is sometimes bad but usually OK. the other one is the same model but newer. the prints are crisp and clear. So I had no need so far for the ZPL direct approach. Newer printers have 300 DPI which might work even better. Did not try this.

Smaller label are also available with just one column per reel. We use some with 25mm width. 13 is also available
https://www.labelident.com/polyester-etiketten-weiss-glaenzend-permanent-klebend-auf-25-4-mm-rollenkern.html?qwidth=2829
I never thought about multi column reels. I can imagine to set up the printer in a way that it only uses the first column. When the reel is over, rewind it and change the ZPL intro in a way that it uses the 2nd column.
I do not know if there is a way to print the first label, remove it and then rewind one step for the next one. I never thought about that. I should be possible as it is a common use case.
In case of any further questions please come back.
Michael

@wolflu05
Copy link
Author

Thank you very much for your reply. Regarding the multi column labels rewinding the tape was one thing I also thought of. An other possible solution would be to buffer the labels until a user requested 4 and then print one row, and also add a button to ignore the not empty buffer and print them anyway.

I'll come back when I have decided to buy a zebra printer.
Wish you a good weekend.
Lukas

@wolflu05
Copy link
Author

wolflu05 commented Jan 30, 2024

Hello Michael,

I have taken a deeper look into your plugin and found a server script. Does this work with a regular usb only zebra printer to print over the network? And can you tell how performant this is? How much time passes from pressing print, until the label is started to print/done?

Regarding the QR code quality, I analyzed how the Dymo label printer software (my current printer) handles QR codes and what output it produces to the printer and found out, that QR codes have some missing pixels like shown in the picture below. Do you know if that is something that the zebra software does too, and maybe would improve the quality?
image

I also found out that there are a lot of zebra printers, and also pretty expensive ones, but also cheap used ones. I would be interested in what particular model you have/would recommend that nicely works with this plugin? And do you tested, by any chance a thermo transfer printer? Maybe the ZT410? Really appreciate your help.

Best
Lukas

@SergeoLacruz
Copy link
Owner

Hi,
I wrote this script to test the network function of the driver with a printer that has just USB. You can hook up a Raspberry to any USB only printer and turn it into a network printer. The printout delay might be a second or less. But the script is not for production use. No error handling at all. It writes directly to the device bypassing the printer queue.

The QR code in your example look like a gray color print. If you try to print 60% black the printer might start to dither. The Zebra tries it and is not successful :-) Be sure to print pure BW
I use the GK420t. This model is not available any longer. A representative from printID told that ZD421t is the nearest successor.
Be careful with used ones. The print head wears out and replacement usually makes no sense. We only use thermo transfer. all my tests have been done with that method.

Michael

@wolflu05
Copy link
Author

wolflu05 commented Feb 5, 2024

Indeed, I checked it more carefully and the Dymo connect software somehow uses a dark grey, not sure why (there is no option to select the barcode color), thanks for pointing it out, never heard of dithering before:

image

And regarding the print server. Do you know any more reliable software for implementing a printer queue but still have the ability to use bidirectional ZPL commands to query for status? What I already found using cups in combination with xinetd, but that just works for printing jobs, not for request where the printer response matters (e.g. querying for status).

service jetdirect
{
        socket_type = stream
	type = UNLISTED
        protocol = tcp
	port = 9100
        wait = no
        user = root
        server = /bin/lp
        server_args = -d <cups-printer-name> -o raw
        groups = yes
        disable = no
}

I already asked the cups team, but they do not know anything unfortunately. Would be really cool to find a good solution here so a pi can be utilized.

I now got a zebra printer and will try printing rasterized images vs native text/barcodes in the next days/weeks and report back.

@SergeoLacruz
Copy link
Owner

I am sure that there is something outside there that does the job. But as I had no need for it I did not spend any time on this. In the production environment we use printers with ethernet.

@wolflu05
Copy link
Author

Hello, I have now tested this a bit further and also came to the conclusion myself that the printed png is as good as using ZPL; also if somebody else is interested in this question.

What I found out is, that we can even improve the quality by using pdftocairo (ref inventree/InvenTree#6488) to get square pixels instead if not always same size square pixels if only the threshold filtering is used.

And then it is important to have all css distances in the label to be specified in multiples of the dpi value, where the easiest is to just use the css unit in(inches) instead of mm. (And for the QR code size the easiest is to just use a value where $(23\cdot n)/\text{dpi}, n\in\mathbb{N}$ again in combination with in like described on your awesome README)

Thank you again for your awesome help, I'll close this now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants