From a8545c254695ecfe5fac5d2cf3466e8540e663d4 Mon Sep 17 00:00:00 2001 From: Eden Kirin Date: Mon, 31 Jul 2023 15:17:20 +0200 Subject: [PATCH] Finished custom label --- assets/agenzia-entrate-logo-mono.png | Bin 0 -> 12028 bytes sticker-print.js | 43 ++++++++++++++++----------- 2 files changed, 26 insertions(+), 17 deletions(-) create mode 100644 assets/agenzia-entrate-logo-mono.png diff --git a/assets/agenzia-entrate-logo-mono.png b/assets/agenzia-entrate-logo-mono.png new file mode 100644 index 0000000000000000000000000000000000000000..d090270e6e0a0cfd103ab5b46c441570cf36388d GIT binary patch literal 12028 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 FzW~u}d5{1A literal 0 HcmV?d00001 diff --git a/sticker-print.js b/sticker-print.js index eb4c569..4eb3523 100644 --- a/sticker-print.js +++ b/sticker-print.js @@ -6,7 +6,7 @@ const TEMPLATES = { ^FX Template label 70x35mm ^FX --------- Agenzia Entrata logo - ^FO20,85^GFA,2409,2409,33,,:::::I01LF8hL0806,I07LF8hK08812,I0MFChK0140B8,I0MFChI02384045E,001MFEhI0275802058,001MFEhI0AC6I0C44,001MFEhI0BFC004246,I0NFhH01768I0189,I0NFhI064K0C9,I07MF8hG0ACCK0E7C,J0MF8gI07V01B48K0422,L07JFCgI0FV02DDL0691,L0KFCgI0FW0EBI0800141,L0KFCgI0FV04FAI08001378,K01FI07EhG0FAL0102,K018J0Eh08F2I04I019,M03FE03J0FEF80FC03EFC03FFE03F8007F8P01E2L01414,L03IFEJ01IFC3FF03FFE03FFE07F801FFCP056O056,K01KFCI03IFC7FF83IF03FFE07F801FFEP01C5L01C42,K07LFI07C3F0F87C1F8F03FFE03F800E0FP0398M0648,K0MF800781E1E01E0F078387C0078J0FP03980041I0268,J03MFE00F00E1E01E0E07818F80078003FFP02B003C0E0017A,J07NF00F00E1IFE0E07801EI07800IFP03A08K0813C,J0OF80F00E1IFE0E07803CI07801IFP0D404J0100BC,I01OFC0F00E1IFE0E078078I07803E0FP0F4M0107C,I03OFC0701E1EJ0E0780F0E00780380FP0F8008L028,I03IF800IFE0783E0F00C1E0781F0E00780381FP0F0404001I039,I07FFCI01IF03FFE0IFE3F9FC3FFE0IFC3IFCO05060300200A91,I0IF8J0IF03FFE07FFE7F9FE3FFE0IFE3IFCN0130E0100201011,I0IFK07FF80FFE03FFC3F8FC3FFE0IFC1IFCO0B1B0200201511,001FFEK03FF8038E007CV038Q031BJ020141D,001FFCK01FFCI0EgS07B2M0D73,001FF8L0FFC001EgS03B1001CI0CCA,001QFC0FFEgS03F1003210104A,003QFC0FFCgR011F3J080124A,003QFE0FF8gS05FE01J0129,003QFE07CgT01EC0400180744,003QFEgX0FCM06D4,003QFEgW04ECM0DB,003QFEP0FU038O03ECM0BA8,003BPFEP0FU03CO01F402J01E9,003BPFEP0FU03CP0FAL017E,0033PFEP0FU03CP07AM058,0013PFEP0FU03CP03CM0E4,I03FCR01F3F003IF007E3F007F801IFC007F8I04DL034C,I03FCL07FF8003IFC07IF80FE7F83FFE03IFE01FFEI06F84I08089C,I03FCL03FF8003IFE0JF81JFC3IF03IFE03IF006241CI019804,00C3FFL03FFC003IFE07IF80JFC3IF01IFC07IF80021BCI01208,00C3FF8K03FFCI0FC1F00FJ01FE38I0F803CI07C0FC02605C004BC082,01E3FFEJ03IFCI0780F00FJ01FCK07803CI0F803C0320325IF001A,01E3IFE00JFEEI0700F00FJ01FJ07FF803CI0F003C0E881804870452,1FF1PFEFF00700F00FJ01EI01IF803CI0JFE03F400509818E4,7FF8PFE7F80700F00FJ01EI03IF803CI0JFE00780318604608,7FFCPFE7F80700F00FJ01EI07IF803CI0JFE014BDI26B433,IFE3OFC7FC0700F00FJ01EI0FC07803CI0FL049DA0D81404,JF1OFCFFC0700F00FJ01EI0F007803CI0FL021C0FEF0018,JF8OF1FFC0F00F00F01E01EI0F01F803C078FC01CI081E606FF6,JFE3MFC3FFC1FC1F80IFE0IFC0JFE03IF87IFEI078DC032,7JF0LFC1IF83FE3FC07FFE1IFE07JF03IF83IFEJ013001B8,7JFE1JF81JF83FE7FC03FFC1IFE03JF01IF01IFCJ03FI0F8,1KF8J03JFE01FC3FC01FE01IFC01FE7C007F8007FEL0E,,:::::^FS + ^FO{agencyLogoXpos},{agencyLogoYpos}{agencyLogoZPL}^FS ^FX --------- QR Code image ^FO{qrCodeXpos},{qrCodeYpos}{qrCodeZPL}^FS @@ -40,7 +40,7 @@ const TEMPLATES = { }, pos: { x: 20, - y: 85, + y: 90, }, }, qrCode: { @@ -100,6 +100,9 @@ function renderInternalStickerTemplate(templateName, vars) { qrCodeZPL: vars.qrCodeZPL, qrCodeXpos: template.qrCode.pos.x, qrCodeYpos: template.qrCode.pos.y, + agencyLogoZPL: vars.agencyLogoZPL, + agencyLogoXpos: template.agencyLogo.pos.x, + agencyLogoYpos: template.agencyLogo.pos.y, companyName: vars.companyName, companyNameXpos: template.companyName.pos.x, companyNameYpos: template.companyName.pos.y, @@ -146,34 +149,40 @@ function imageToGRF(imgUrl, options) { }); } -function createInternalStickerZPL(options) { +async function createInternalStickerZPL(options) { const templateName = "sticker-70x35"; const template = TEMPLATES[templateName]; - return new Promise((resolve, reject) => { - imageToGRF(options.qrCodeUrl, { - width: template.qrCode.dimensions.width, - height: template.qrCode.dimensions.height, - }).then((qrCodeZPL) => { - const zpl = renderInternalStickerTemplate(templateName, { - qrCodeZPL, - ...options, - }); + const agencyLogoZPL = await imageToGRF(options.agencyLogoUrl, { + width: template.agencyLogo.dimensions.width, + height: template.agencyLogo.dimensions.height, + }); + console.log(agencyLogoZPL); - resolve(zpl); - }); + const qrCodeZPL = await imageToGRF(options.qrCodeUrl, { + width: template.qrCode.dimensions.width, + height: template.qrCode.dimensions.height, + }); + + return renderInternalStickerTemplate(templateName, { + agencyLogoZPL, + qrCodeZPL, + ...options, }); } const options = { qrCodeUrl: "/assets/qr-code-example.jpeg", - agencyLogoUrl: "/assets/agenzia-entrate-logo-color.png", + agencyLogoUrl: "/assets/agenzia-entrate-logo-mono.png", companyName: "Vandelay Industries", machineModel: "Model XL-123", masterSystemId: "master-system-id", extMasterSystemId: "ext-msid", }; -createInternalStickerZPL(options).then((zpl) => { +const main = async function () { + const zpl = await createInternalStickerZPL(options); document.querySelector(`textarea[name="zpl"]`).value = zpl; -}); +}; + +main();