michaelrsweet / lprint

A Label Printer Application
https://www.msweet.org/lprint
Apache License 2.0
219 stars 29 forks source link

Printing to tape on LabelWriter DUO #62

Closed eriksl closed 1 year ago

eriksl commented 2 years ago

I am trying to get my automatic label creation script working using lprint, as apparently I should do that (moving it away from cups). At first I succeeded almost, but now all my labels are printed with an offset (first part of the label is skipped, printing starts too late, then doesn't fit the label and the rest is printed on the next label). Apparently it's not an issue with the printer or the label roll, as it always feeds to the correct point (where tearing is exactly between two labels). I already power cycled the printer a few times and re-created the printer, but no improvement. Also I wonder what resolution to use best for the png. I am using this label "oe_sm-multipurpose-label_1x2.125in" (Dymo 11352 labels). Printing at 300 dpi, I guess I should use 300 x 637 pixels but I can't get lprint to no touch the image (NOT scale it). I also had this problem with cups. It always leaves some space on one side, depending on what dimension is altered. I don't want that, I want 1:1 pixel printing, so any pixel falling off the printing area, should be simply ignored. Otherwise I can't make reliable/reproducable labels. Is that possible?

michaelrsweet commented 2 years ago

@eriksl What format are you sending for the label image? And what operating system are you using?

This particular printer cannot print at the edges of the label (one of the things I don't like about DYMO printers, and it makes no sense to me given the hardware) - the margins are 1mm on the sides and 5.25mm for the leading and trailing edges.

When printing a PNG or JPEG image, you can try setting the default print scaling to "fill" to scale outside the printable margins ("-o print-scaling=fill" on the command-line, or change the default on the web interface). For PDF output it should print it without scaling if the PDF dimensions match the label dimensions.

eriksl commented 2 years ago

Hi Michael,

Thanks for your quick response. I'll try to supply extra information and have some additional questions too.

I already assumed there were some hardware-imposed limitations (regarding the print margins), that's indeed a pity but I learned to live with it, when I was using cups to drive the printer. But now, using lprint, there is not a small margin like that, actually 1/4 of the label is skipped now and the printing continues beyond the label, on the back strip and even on the next label. So it's offset by about half an inch, so there is really an issue there.

As a next step I will try using cups again, so see if there is anything wrong with the printer.

Operating system is Fedora Linux 34, lprint installed from package, version 1.1.0.

I am sending png images, which are supposed to be printed 1:1 to pixels on the paper, so I have full control. I am using various resolutions, none of them work like I expect, currently I am using 300x580 which should match the combination of DPI (300) and label size.

I will try your other suggestions. May I suggest you add them to the documention, I can't remember I have read anything about scaling or filling.

Just got a bit fed up because I was wasting my labels at a very quick rate, with no difference whatsover, whatever I tried and changed.

michaelrsweet commented 2 years ago

@eriksl WRT images not being scaled, PNG and JPEG images are always scaled/converted/dithered/cropped for printing but sending a matching pixel size combined with "-o print-scaling=fill" will ensure that the scaling matches your expectations. The only image formats that are not scaled are Apple and PWG raster files since those are the "low level" image format used for AirPrint and IPP Everywhere.

The offset printing tells me you may have a problem with the web sensor on your printer (the thing that detects where the hole is in the backing paper). I don't remember off-hand if there is a way to reset or calibrate the sensor but the DYMO printers rely on it to detect the end of a label.

eriksl commented 2 years ago

I was thinking the same, but when I press the feed button, the paper advances exactly one label, positioned exactly at the tearing point, so I don't think of the printer being the issue (but we can never rule it out, of course).

Would lprint accept a raw pwg file? Let's see if I can generate one? My goal is not to print photographs, it's just monochrome (no greyscale) text.

On the other hand, it would be perfectly fine if lprint could do what my script is doing now: accept one to six lines of text and scale it in a such a way that it will fit on the paper. I read the media can't be probed, so that should be specified, no problem there. That means a single line should fill all of the height. Maybe I am doing it too complex now.

michaelrsweet commented 2 years ago

@eriksl Yes, that is how LPrint appears on the network - as an IPP Everywhere printer that accepts PWG Raster (along with PNG and JPEG files).

Generating good looking bitmap text isn't trivial...

eriksl commented 2 years ago

Can you explain what the different "fit" options actually mean (for png files)?

eriksl commented 2 years ago

Apparently I can't use pdf as input anyway?

eos erik:~ $ lprint submit test.pdf            
label-30
E [2022-04-22T17:16:30.145Z] [Job 30] Unable to process job with format 'application/pdf'.
michaelrsweet commented 2 years ago

@eriksl "none" means use the image's native resolution to size the image on the page. For PNG files with LPrint, we don't currently have access to the resolution information (there is an open PAPPL issue on this) so it will default to 128 PPI (long story).

"auto" means use the native resolution and scale down to fit (for non-borderless output) or fill (for borderless output) as needed. "auto-fit" is similar but always scales-to-fit (regardless of margins) if the image won't fit.

"fit" means scale the image to fit within the printable margins (make as big as possible without cropping)

"fill" means scale the image to fill the media, even if it means losing the edges of the output.

michaelrsweet commented 2 years ago

@eriksl Oh, and no LPrint doesn't support direct printing of PDF files, you have to use CUPS for that (just add the printer using the IPP Everywhere driver and it'll work from any application)

eriksl commented 2 years ago

Thanks!

So I think that means that I should be using ideally "none", but that doesn't work, so I should be using "fill" and trial-and-error what the actual visible resolution is what I can send, without losing pixels.

Or... otherwise?

michaelrsweet commented 2 years ago

@eriksl In your case, "fill" is the best choice because a) you have a 300dpi image of the proper dimensions and b) you don't care that some of the image will be clipped to the printable area of the label.

eriksl commented 2 years ago

I am going to try, thanks!

eriksl commented 2 years ago

BTW can you explain the following?

In "fit" mode:

When I use a 1" x 2 1/8" label (Dymo 11352) I would expect the printable area to be 300 (DPI) x 1" by 300 x 2 1/8" which would be 300 x 638 dots. In practise though, the printable area is exactly filled when I send a png of 194x350 pixels, which is almost half of the expected resolution. I am printing (for test) a rectangle of 6 dots wide in black on a background of white. When I send the resolution I'd expect (300x638) actually nothing is printed at all. Maybe the rectangle is completely out of the printing area. But the fit mode is expected to scale down if it doesn't fit, isn't it?

I also think there is something seriously wrong with the "fill" option (at least in combination with the Dymo DUO printer), because whatever I do, I always end up with parts of the text outside of the printing area. I increased and decreased both x and y size , individually, and I never get it right.

I think "fit" will be more logical for me (if it works as described), but it's strange that I can't send the full resolution.

Also I have the strange phenomenon that when I print all kinds of random stuff, the outcome is different to when I just send a thin black rectangle that just spans the outside of the image (within the same resolution png image). Most of the time absolutely nothing is printed.

michaelrsweet commented 2 years ago

@eriksl The margins for the DYMO printers are 1mm left and right and 5.25mm top and bottom, so the printable area of a 1x2-1/8" label at ~300 dpi (actually 12dots/mm) is 276x513 pixels. 194x350 sounds to me like the printer is only doing ~203dpi (8dots/mm)... Checking to see if I've missed a necessary command for the older DYMO printers to print at 300 dpi...

eriksl commented 2 years ago

Great :+1:

In the meantime still experimenting.

eriksl commented 2 years ago

I now resorted to sending a real high resolution PNG so scaling doesn't matter much and keeping a marging in the image of about 10% on both sides and that works quite well. I'd rather have 1:1 scaling though and no margins, of course ;-).

eriksl commented 2 years ago

Also can you give an example to get the tape printer (of the Dymo DUO printer) working. I now only get blank tape feeded. I can't find how to configure 12mm or 24mm tape as media as well.

eriksl commented 2 years ago

Thank you for your support!

The only thing left is that I can't seem to print anything to the tape part of the printer, is that a known issue? What media should I choose, as I can only select between "label" type media, not tape (e.g. height is 12 or 24 mm, length is unlimited).

michaelrsweet commented 2 years ago

You should be able to use "-o media-source=alternate-roll" to select the tape feed, but I don't have the original DYMO DUO, just the 450 Twin Turbo so it is possible I'm using the wrong command to select it?

eriksl commented 2 years ago

That's interesting ;-)

Using CUPS I would create two different printers, they also have two different USB id's.

I was under the impression that the "alternate roll" was meant to be able to switch quickly between two rolls, and I am using it that way.

eos erik:~ $ lprint devices
usb://DYMO/LabelWriter%20450%20DUO%20Label?serial=05060408540023
usb://DYMO/LabelWriter%20450%20DUO%20Tape?serial=05060408540023

Maybe I shouldn't use "fill" here, I will try others.

eriksl commented 2 years ago

Nope, nothing printed whatever I configure. Just lots of tape feeding.

michaelrsweet commented 2 years ago

OK, well the two USB entries means they are treated as separate printers so I'll need to dig a bit. Probably the tape portion needs a little something different... :/

eriksl commented 2 years ago

Guess so ;-). In the meantime I'll be using cups for the tape part.

Is there any way to have the final bitmap not sent to the printer but redirected to a file where it can be inspected some way? So I don't need to spend all these labels and tapes for testing?

michaelrsweet commented 2 years ago

@eriksl Unfortunately, no. There was, very early in the development of LPrint and PAPPL, a way to "clone" the output stream but it had a lot of limitations and added overhead to the API that turned out to cause some timing-related issues for some of my users... So I removed that code before 1.0.

That said, you can setup a directory and point a queue at the directory to capture the output:

mkdir -p /tmp/some/directory
lprint add test-tape -v file:///tmp/some/directory -m dymo_lw-duo-tape

The output will be the printer-ready data that the driver produces.

eriksl commented 2 years ago

Thx, now only find out how to decode the output ;-)

michaelrsweet commented 2 years ago

@eriksl OK, I've done some digging and the tape portion of this printer uses a different command set 🙄. I will try to get this working for LPrint 1.2 but I'll need your help in testing since I don't have your particular printer to test with... :)

eriksl commented 2 years ago

Thx, just yell ;-)

michaelrsweet commented 2 years ago

@eriksl I was able to pick up a 450 DUO (really hard to find right now...) and am testing changes locally. Will let you know when I have something for you to test... :)

sur5r commented 1 year ago

Is this specific to the LW 450 DUO or does it apply to the LW DUO as well? I have the latter and could help testing.

michaelrsweet commented 1 year ago

@sur5r It will apply to all of the DUO's, and I am hoping to get back to this Real Soon Now...

michaelrsweet commented 1 year ago

[master 7c3044e] Fix DYMO label tape driver (Issue #62)

Please test.

sur5r commented 1 year ago

Tested with b2806b1:

Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00005602fc06f8bc in lprintTestFilterCB (job=0x7fc8c8000b70, device=0x7fc8cc000f60, cbdata=<optimized out>) at lprint-testpage.c:252
252       *lineptr &= ~bit;
[Current thread is 1 (Thread 0x7fc8d48ed6c0 (LWP 504463))]
(gdb) bt full
#0  0x00005602fc06f8bc in lprintTestFilterCB (job=0x7fc8c8000b70, device=0x7fc8cc000f60, cbdata=<optimized out>) at lprint-testpage.c:252
        bit = 1 '\001'
        xc = 5
        data = {extension = 0x0, delete_cb = 0x0, identify_cb = 0x0, printfile_cb = 0x5602fc06eb8a <lprint_dymo_printfile>, rendjob_cb = 0x5602fc06e974 <lprint_dymo_rendjob>, rendpage_cb = 0x5602fc06e900 <lprint_dymo_rendpage>, rstartjob_cb = 0x5602fc06eafc <lprint_dymo_rstartjob>, 
          rstartpage_cb = 0x5602fc06e61c <lprint_dymo_rstartpage>, rwriteline_cb = 0x5602fc06e993 <lprint_dymo_rwriteline>, status_cb = 0x5602fc06e619 <lprint_dymo_status>, testpage_cb = 0x5602fc06fa54 <lprintTestPageCB>, gdither = {"`(0h\214\274Ĕa)1i\215\275ŕ", 
            " \000\b8\264\354\364\314!\001\t9\265\355\365", <incomplete sequence \315>, "X\030\020@\254\344\374\324Y\031\021A\255\345\375", <incomplete sequence \325>, "xPHp\204\244ܜyQIq\205\245ݝ", "\210\270\300\220d,4l\211\271\301\221e-5m", "\260\350\360\310$\004\f<\261\351\361\311%\005\r=", 
            "\250\340\370\320\\\034\024D\251\341\371\321]\035\025E", "\200\240ؘ|TLt\201\241ٙ}UMu", "b*2j\216\276Ɩc+3k\217\277Ǘ", "\"\002\n:\266\356\366\316#\003\v;\267\357\367", <incomplete sequence \317>, "Z\032\022B\256\346\376\326[\033\023C\257\347\376", <incomplete sequence \327>, 
            "zRJr\206\246ޞ{SKs\207\247ߟ", "\212\272\302\222f.6n\213\273Óg/7o", "\262\352\362\312&\006\016>\263\353\363\313'\a\017?", "\252\342\372\322^\036\026F\253\343\373\323_\037\027G", "\202\242ښ~VNv\203\243ۛ\177WOw"}, pdither = {"o1\216\242q\303G\261\311\062\227^B%", <incomplete sequence \374>, 
            "\031c\357\336 \372\224\023&jܪ\302\212\r\247", "}\262O\017A\255{WՃ\367\027t6\345", <incomplete sequence \324>, ")ʘ\204\275h5\354\241>\001\265M\361\223D", "\002\364\070[\346\005\314\034\273e\220\316!\\\276k", "ߤr$֜\213F\365T\342\060~\236\021\207", "S\304\025\376L-\263s\f(\251i\375\260\323;", 
            "d\264\221z\254a\353\201ו\307\bH\032\356,", "\350\037E\v\315:\022\301X<p\335\214Vx\231", "Ђ\363\240\340n\"\370\245\030\352\270\064ƫ\006", "l\274\063Y\211\272\232N/\206b\235#\371_?", "\020K\333'\000C\344y\305\360\003J\177", <incomplete sequence \343\217>, "\366\257w\310\373g\222\016Ѯm\332\300Rˣ", 
            "\035]\226\026\246\266\067\036Z@*\215\250\071u.", "\330\351=\200Q\355\331v\237\377\271\033\362f\004\205", "I\277\t\322+`\a\210\347P\n|\341ϛ\267"}, format = 0x5602fc07216e "application/vnd.dymo-lw", make_and_model = "DYMO LabelWriter DUO Tape 128", '\000' <repeats 98 times>, ppm = 20, ppm_color = 0, 
          icons = {{filename = '\000' <repeats 255 times>, data = 0x5602fc082560 <lprint_small_png>, datalen = 5964}, {filename = '\000' <repeats 255 times>, data = 0x5602fc07e240 <lprint_png>, datalen = 6491}, {filename = '\000' <repeats 255 times>, data = 0x5602fc0780e0 <lprint_large_png>, datalen = 24908}}, 
          kind = 8, has_supplies = false, input_face_up = true, output_face_up = true, orient_default = IPP_ORIENT_NONE, color_supported = 21, color_default = 16, content_default = 1, quality_default = IPP_QUALITY_NORMAL, scaling_default = 1, raster_types = 524, force_raster_type = 4, duplex = PAPPL_DUPLEX_NONE, 
          sides_supported = 1, sides_default = 1, finishings = 0, num_resolution = 1, x_resolution = {180, 0, 0, 0}, y_resolution = {180, 0, 0, 0}, x_default = 180, y_default = 180, borderless = false, left_right = 1, bottom_top = 1, num_media = 17, media = {0x5602fc0721d1 "oe_thin-1in-tape_0.25x1in", 
            0x5602fc0721eb "oe_thinner-1in-tape_0.375x1in", 0x5602fc072209 "oe_medium-1in-tape_0.5x1in", 0x5602fc072224 "oe_wider-1in-tape_0.75x1in", 0x5602fc07223f "oe_wide-1in-tape_1x1in", 0x5602fc072256 "oe_thin-2in-tape_0.25x2in", 0x5602fc072270 "oe_thinner-2in-tape_0.375x2in", 
            0x5602fc07228e "oe_medium-2in-tape_0.5x2in", 0x5602fc0722a9 "oe_wider-2in-tape_0.75x2in", 0x5602fc072190 "oe_wide-2in-tape_1x2in", 0x5602fc0722c4 "oe_thin-3in-tape_0.25x3in", 0x5602fc0722de "oe_thinner-3in-tape_0.375x3in", 0x5602fc0722fc "oe_medium-3in-tape_0.5x3in", 
            0x5602fc072317 "oe_wider-3in-tape_0.75x3in", 0x5602fc072332 "oe_wide-3in-tape_1x3in", 0x5602fc072349 "roll_max_1x3600in", 0x5602fc07235b "roll_min_0.25x1in", 0x0 <repeats 239 times>}, media_default = {bottom_margin = 1, left_margin = 1, left_offset = 0, right_margin = 1, size_width = 1270, 
            size_length = 5080, size_name = "oe_medium-2in-tape_0.5x2in", '\000' <repeats 37 times>, source = "main-roll", '\000' <repeats 54 times>, top_margin = 1, top_offset = 0, tracking = 8, type = "labels", '\000' <repeats 57 times>}, media_ready = {{bottom_margin = 1, left_margin = 1, left_offset = 0, 
              right_margin = 1, size_width = 1270, size_length = 5080, size_name = "oe_medium-2in-tape_0.5x2in", '\000' <repeats 37 times>, source = "main-roll", '\000' <repeats 54 times>, top_margin = 1, top_offset = 0, tracking = 8, type = "labels", '\000' <repeats 57 times>}, {bottom_margin = 0, left_margin = 0, 
              left_offset = 0, right_margin = 0, size_width = 0, size_length = 0, size_name = '\000' <repeats 63 times>, source = '\000' <repeats 63 times>, top_margin = 0, top_offset = 0, tracking = 0, type = '\000' <repeats 63 times>} <repeats 15 times>}, num_source = 1, source = {0x5602fc072186 "main-roll", 
            0x0 <repeats 15 times>}, left_offset_supported = {0, 0}, top_offset_supported = {0, 0}, tracking_supported = 8, num_type = 1, type = {0x5602fc0721ca "labels", 0x0 <repeats 31 times>}, num_bin = 0, bin = {0x0 <repeats 16 times>}, bin_default = 0, mode_configured = 0, mode_supported = 0, 
          tear_offset_configured = 0, tear_offset_supported = {0, 0}, speed_supported = {0, 0}, speed_default = 0, darkness_default = 0, darkness_configured = 0, darkness_supported = 4, identify_default = 0, identify_supported = 0, num_features = 1, features = {0x5602fc077582 "airprint-2.1", 
            0x0 <repeats 31 times>}, num_vendor = 0, vendor = {0x0 <repeats 32 times>}}
        options = 0x7fc8cc035db0
        line = 0x7fc8cc0143f0 "\377UUUUUUUUUU\377"
        lineptr = 0x7fc8ec0143ef <error: Cannot access memory at address 0x7fc8ec0143ef>
        black = 255 '\377'
        gray0 = 170 '\252'
        gray1 = 85 'U'
        width = <optimized out>
        height = <optimized out>
        y = 59
        ytop = 59
        yend = 299
        ybottom = 355
        x1mm = 5
        y1mm = 5
        xleft = <optimized out>
        x1b = 1
        pw = <optimized out>
        ph = <optimized out>
        pixels = 0x5602fc082280 <portrait>
        pixel = 0x5602fc072d84 "....", ' ' <repeats 12 times>
        ret = false
        portrait = {0x5602fc072d84 "....", ' ' <repeats 12 times>, 0x5602fc072d95 ".TTT.", ' ' <repeats 11 times>, 0x5602fc072da6 ".TT.", ' ' <repeats 12 times>, 0x5602fc072db7 ".TT.          ..", 0x5602fc072dc8 ".TT", '.' <repeats 11 times>, "T.", 0x5602fc072dd9 ".", 'T' <repeats 14 times>, ".", 
          0x5602fc072dd9 ".", 'T' <repeats 14 times>, ".", 0x5602fc072dc8 ".TT", '.' <repeats 11 times>, "T.", 0x5602fc072db7 ".TT.          ..", 0x5602fc072da6 ".TT.", ' ' <repeats 12 times>, 0x5602fc072d95 ".TTT.", ' ' <repeats 11 times>, 0x5602fc072d84 "....", ' ' <repeats 12 times>, 
          0x5602fc072dea "   ..     ...   ", 0x5602fc072dfb "  .SS.   .SSS.  ", 0x5602fc072e0c " .SS.   .SSSSS. ", 0x5602fc072e1d " .SS.  .SS..SS. ", 0x5602fc072e2e ".SS.   .SS. .SS.", 0x5602fc072e3f ".SS.  .SS.  .SS.", 0x5602fc072e3f ".SS.  .SS.  .SS.", 0x5602fc072e50 ".SS. .SS.   .SS.", 
          0x5602fc072e61 " .SS..SS.  .SS. ", 0x5602fc072e72 " .SSSSS.   .SS. ", 0x5602fc072e83 "  .SSS.   .SS.  ", 0x5602fc072e94 "   ...     ..   ", 0x5602fc072ea5 "....        ....", 0x5602fc072eb6 ".EEE.      .EEE.", 0x5602fc072ec7 ".EE.  ....  .EE.", 0x5602fc072ed8 ".EE. .EEEE. .EE.", 
          0x5602fc072ee9 ".EE.  .EE.  .EE.", 0x5602fc072ee9 ".EE.  .EE.  .EE.", 0x5602fc072ee9 ".EE.  .EE.  .EE.", 0x5602fc072ee9 ".EE.  .EE.  .EE.", 0x5602fc072efa ".EE....EE....EE.", 0x5602fc072f0b ".", 'E' <repeats 14 times>, ".", 0x5602fc072f0b ".", 'E' <repeats 14 times>, ".", 
          0x5602fc072f1c '.' <repeats 16 times>, 0x5602fc072d84 "....", ' ' <repeats 12 times>, 0x5602fc072d95 ".TTT.", ' ' <repeats 11 times>, 0x5602fc072da6 ".TT.", ' ' <repeats 12 times>, 0x5602fc072db7 ".TT.          ..", 0x5602fc072dc8 ".TT", '.' <repeats 11 times>, "T.", 
          0x5602fc072dd9 ".", 'T' <repeats 14 times>, ".", 0x5602fc072dd9 ".", 'T' <repeats 14 times>, ".", 0x5602fc072dc8 ".TT", '.' <repeats 11 times>, "T.", 0x5602fc072db7 ".TT.          ..", 0x5602fc072da6 ".TT.", ' ' <repeats 12 times>, 0x5602fc072d95 ".TTT.", ' ' <repeats 11 times>, 
          0x5602fc072d84 "....", ' ' <repeats 12 times>}
        landscape = {0x5602fc072f2d '.' <repeats 24 times>, "    ....    ", '.' <repeats 12 times>, 0x5602fc072f5e ".TTTTTTTTTT..EEEEEEEEEE.  ..SSSS..  .TTTTTTTTTT.", 0x5602fc072f8f ".TTTTTTTTTT..EEEEEEEEEE. .SSSSSSSS. .TTTTTTTTTT.", 0x5602fc072fc0 ".T...TT...T..EE.......E..SSS....SSS..T...TT...T.", 
          0x5602fc072ff1 " .  .TT.  . .EE.      . .SS.    ..S. .  .TT.  . ", 0x5602fc073022 "    .TT.    .EE.    .   .SS..     .     .TT.    ", 0x5602fc073053 "    .TT.    .EE.....E.   .SSS..         .TT.    ", 0x5602fc073084 "    .TT.    .EEEEEEEE.    .SSSS..       .TT.    ", 
          0x5602fc0730b5 "    .TT.    .EEEEEEEE.     ..SSSS.      .TT.    ", 0x5602fc0730e6 "    .TT.    .EE.....E.       ..SSS.     .TT.    ", 0x5602fc073117 "    .TT.    .EE.    .    .     ..SS.    .TT.    ", 0x5602fc073148 "    .TT.    .EE.      . .S.     .SS.    .TT.    ", 
          0x5602fc073179 "    .TT.    .EE.......E..SSS....SSS.    .TT.    ", 0x5602fc0731aa "    .TT.    .EEEEEEEEEE. .SSSSSSSS.     .TT.    ", 0x5602fc0731db "   .TTTT.   .EEEEEEEEEE.  ..SSSS..     .TTTT.   ", 0x5602fc07320c "   ......   ", '.' <repeats 12 times>, "    ....       ......   "}
#1  0x00007fc8d6a31687 in _papplJobProcess (job=0x7fc8c8000b70) at ./pappl/job-process.c:523
        filter = <optimized out>
#2  0x00007fc8d6814fd4 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
        ret = <optimized out>
        pd = <optimized out>
        out = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140500536317632, 3794922171846127702, -128, 0, 140500544696096, 140500527927296, -3802185398153351082, -3802189714534535082}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
#3  0x00007fc8d68955ac in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
michaelrsweet commented 1 year ago

@sur5r It should always cut at the end of each page/label.

I'll see if I can reproduce the crash on my system.

sur5r commented 1 year ago

Is it also supposed to cut after the test page?

michaelrsweet commented 1 year ago

@sur5r Yes, after every page/label, no matter how it is submitted.

eriksl commented 1 year ago

Thanks for stepping in @sur5r. I will also test shortly, but currently I swamped by my dayjob (also working in the weekends now...)

michaelrsweet commented 1 year ago

All, please test against the 1.2.0 release.

eriksl commented 10 months ago

Hi,

So very sorry for not coming back sooner.

I am now testing with the master branch, self-compiled. The tape printer now does produce something, but it's weird. I have made a png that consists of two black rectangles, a few pixels wide, the outer one to the edges of the image, the inner one a few pixels inside (so you get a black border, then a white rectangle, then a black rectangle, then white, from outside to inside).

The image I made is a png of 1000x120 pixels. When I print it, it only prints the top half of the im age, on the bottom half of the tape... When I resize the image to 500x60 (just to see what happens), exactly the same happens. So this is kind of useless for me.

Maybe it has to do with that I cannot select a proper media type for the tape printer? It only allows for "label" type media.

This is the image I am trying to print:

test

This is what comes out:

20230819_130037