From bf775f3745ac9b964c32172d6180c56dc0226e89 Mon Sep 17 00:00:00 2001 From: tonym Date: Wed, 14 Jan 2026 23:30:11 -0600 Subject: [PATCH] feat: Add QR code size setting for fixed-size QR codes Co-Authored-By: Claude Opus 4.5 --- client/public/locales/en/common.json | 2 + client/src/pages/printing/printing.tsx | 1 + .../pages/printing/qrCodePrintingDialog.tsx | 39 ++++++++++++++++++- 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/client/public/locales/en/common.json b/client/public/locales/en/common.json index 6698259..de65926 100644 --- a/client/public/locales/en/common.json +++ b/client/public/locales/en/common.json @@ -128,6 +128,8 @@ "qrCodePaddingTooltip": "White space around the QR code for better scanning reliability", "qrCodeMaxWidth": "QR Code Max Width", "qrCodeMaxWidthTooltip": "Maximum width of QR code as percentage of label. Set to 0 for automatic sizing.", + "qrCodeSize": "QR Code Size", + "qrCodeSizeTooltip": "Fixed size of QR code in millimeters. Set to 0 for automatic sizing based on label.", "auto": "Auto" }, "spoolSelect": { diff --git a/client/src/pages/printing/printing.tsx b/client/src/pages/printing/printing.tsx index e3cbe89..10147ab 100644 --- a/client/src/pages/printing/printing.tsx +++ b/client/src/pages/printing/printing.tsx @@ -24,6 +24,7 @@ export interface QRCodePrintSettings { textSize?: number; qrCodePadding?: number; // in mm, default 2 qrCodeMaxWidth?: number; // percentage 0-100, 0 = no constraint (auto) + qrCodeSize?: number; // in mm, 0 = auto printSettings: PrintSettings; } diff --git a/client/src/pages/printing/qrCodePrintingDialog.tsx b/client/src/pages/printing/qrCodePrintingDialog.tsx index 35eb779..d73da36 100644 --- a/client/src/pages/printing/qrCodePrintingDialog.tsx +++ b/client/src/pages/printing/qrCodePrintingDialog.tsx @@ -43,6 +43,7 @@ const QRCodePrintingDialog: React.FC = ({ const textSize = printSettings?.textSize || 3; const qrCodePadding = printSettings?.qrCodePadding ?? 2; const qrCodeMaxWidth = printSettings?.qrCodeMaxWidth ?? 0; // 0 = auto (no constraint) + const qrCodeSize = printSettings?.qrCodeSize ?? 0; // 0 = auto const elements = items.map((item) => { return ( @@ -224,6 +225,40 @@ const QRCodePrintingDialog: React.FC = ({ + + + + (value === 0 ? t("printing.qrcode.auto") : `${value} mm`) }} + min={0} + max={50} + value={qrCodeSize} + step={1} + onChange={(value) => { + printSettings.qrCodeSize = value; + setPrintSettings(printSettings); + }} + /> + + + { + printSettings.qrCodeSize = value ?? 0; + setPrintSettings(printSettings); + }} + /> + + + {extraSettings} @@ -243,8 +278,8 @@ const QRCodePrintingDialog: React.FC = ({ } .print-page .print-qrcode { - width: auto !important; - height: auto !important; + width: ${qrCodeSize > 0 ? `${qrCodeSize}mm` : "auto"} !important; + height: ${qrCodeSize > 0 ? `${qrCodeSize}mm` : "auto"} !important; padding: ${qrCodePadding}mm; }