Attempt to match the sw and hw barcode sizes
This commit is contained in:
parent
ddc3481ab8
commit
af093dd04d
@ -419,6 +419,24 @@ class Escpos(object):
|
|||||||
regex, code
|
regex, code
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def _dpi(self) -> int:
|
||||||
|
"""Printer's DPI resolution."""
|
||||||
|
try:
|
||||||
|
dpi = int(self.profile.profile_data["media"]["dpi"])
|
||||||
|
except (KeyError, TypeError):
|
||||||
|
# Calculate the printer's DPI from the width info of the profile.
|
||||||
|
try:
|
||||||
|
px = self.profile.profile_data["media"]["width"]["pixels"]
|
||||||
|
mm = self.profile.profile_data["media"]["width"]["mm"]
|
||||||
|
mm -= 10 # paper width minus margin =~ printable area
|
||||||
|
dpi = int(px / (mm / 25.4))
|
||||||
|
except (KeyError, TypeError, ZeroDivisionError):
|
||||||
|
# Value on error.
|
||||||
|
dpi = 180
|
||||||
|
print(f"No printer's DPI info was found: Defaulting to {dpi}.")
|
||||||
|
self.profile.profile_data["media"]["dpi"] = dpi
|
||||||
|
return dpi
|
||||||
|
|
||||||
def barcode(
|
def barcode(
|
||||||
self,
|
self,
|
||||||
code,
|
code,
|
||||||
@ -521,14 +539,16 @@ class Escpos(object):
|
|||||||
print(f"Using {impl} software barcode renderer")
|
print(f"Using {impl} software barcode renderer")
|
||||||
# Set barcode type
|
# Set barcode type
|
||||||
bc = capable_bc["sw"] or bc
|
bc = capable_bc["sw"] or bc
|
||||||
|
# Get mm per point of the printer
|
||||||
|
mmxpt = 25.4 / self._dpi()
|
||||||
self._sw_barcode(
|
self._sw_barcode(
|
||||||
bc,
|
bc,
|
||||||
code,
|
code,
|
||||||
impl=impl,
|
impl=impl,
|
||||||
module_height=5, # TODO: _hw_barcode() size equivalence
|
module_height=height * mmxpt,
|
||||||
module_width=0.2, # TODO: _hw_barcode() size equivalence
|
module_width=width * mmxpt,
|
||||||
text_distance=2, # TODO: _hw_barcode() size equivalence
|
text_distance=2, # TODO: _hw_barcode() size equivalence
|
||||||
font_size=6,
|
font_size=6, # TODO: _hw_barcode() size equivalence
|
||||||
center=align_ct,
|
center=align_ct,
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
@ -764,6 +784,7 @@ class Escpos(object):
|
|||||||
:type center: bool
|
:type center: bool
|
||||||
"""
|
"""
|
||||||
image_writer = ImageWriter()
|
image_writer = ImageWriter()
|
||||||
|
image_writer.dpi = self._dpi() # Image dpi has to match the printer's dpi
|
||||||
|
|
||||||
# Check if barcode type exists
|
# Check if barcode type exists
|
||||||
if barcode_type not in barcode.PROVIDED_BARCODES:
|
if barcode_type not in barcode.PROVIDED_BARCODES:
|
||||||
@ -783,6 +804,7 @@ class Escpos(object):
|
|||||||
{
|
{
|
||||||
"module_height": module_height,
|
"module_height": module_height,
|
||||||
"module_width": module_width,
|
"module_width": module_width,
|
||||||
|
"quiet_zone": 0, # horizontal padding
|
||||||
"text_distance": text_distance,
|
"text_distance": text_distance,
|
||||||
"font_size": font_size,
|
"font_size": font_size,
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user