Closed rajinikanth0601 closed 1 month ago
This is probably because the printer only accepts alignment changes at the beginning of a line. Adding a newline after the image will probably solve it.
The upcoming version 3 has a completely different way of dealing with alignment, and does not have this problem.
@NielsLeenheer issue is reproducible with ReceiptPrinterEncoder
as well, alignment is not working for the image and all elements below the image.
Example Code :
let encoder = new ReceiptPrinterEncoder({
language: 'esc-pos',
columns: 48,
imageMode: 'raster'
});
let img = new Image();
img.src = 'data:image/jpeg;base64,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';
encoder.initialize()
.align('right')
.line('Text with right alignment 1')
.align('right')
.image(img, 400, 400)
.align('center')
.line('Text with center alignment 2')
.align('center')
.line('Text with center alignment 3')
.encode();
Print :
I've tested this with the latest code in the repository and it works for me. Tried it with a dozen different printers and I'm not seeing any issue at all.
Is this with the 3.0.1 release from earlier today?
Yeah @NielsLeenheer, it is not reproducible on all the printers. As I mentioned, it's working fine with Shreyan's printer but is having issues with the Everycom EC400. Is it possible for you to verify this on that printer? Please check the table below to see how the print is coming out for different cases, I hope that might help you understand the issue better. Please let me know if you need any additional data for debugging this issue.
Print Image | Comments |
---|---|
Working fine | |
Working fine | |
Working fine | |
Working fine | |
Working fine | |
Working fine | |
Working fine | |
Working fine | |
Working fine | |
Working fine | |
Working fine |
@NielsLeenheer This was with last week's main branch code of ReceiptPrinterEncoder
, also, I see 3.0.0 as the latest version.
The first thing you should try is the latest 3.0.1 release as there were some alignment bugs in last weeks main branch that were fixed in 3.0.0 and some more fixed in 3.0.1.
@NielsLeenheer I have taken the latest receipt-printer-encoder.umd.js
from main branch and tested now, still facing the same issue.
Hi @NielsLeenheer, Any update on this issue? Could you please reopen this issue as it is still reproducible on Everycom printers, or let me know if I need to raise a new issue for this?
@NielsLeenheer I've been debugging the alignment issue by comparing the encoded bytes between older and newer versions of the library. In the latest version, I noticed that alignment is now handled by adding spaces on the left side of the text. I tried replacing .align(center)
with the raw command .raw([0x1B, 0x61, 0x01])
, and this resolved the alignment issue for my case.
Could you please share the reasoning behind the custom alignment handling introduced in the newer version? I’d like to understand if using raw commands might risk breaking functionality under certain conditions. Thank you!
Alignment is not working for images and the element next to image on everycom printer (EC400), same code works fine on shreyan's printer.
Example Code:
Print Image: