Skip to content

Instantly share code, notes, and snippets.

@tresf

tresf/scale-zpl.js

Last active Oct 10, 2020
Embed
What would you like to do?
(Experimental) Scales a Raw ZPL file from 203 DPI (dots per inch) to 300 DPI
/*
* author: Tres Finocchiaro
* date: 2015-05-22
* license: Public Domain; Use as you wish.
* source: http://qz.io
*/
/*
* Scales text from a raw ZPL label from 203 DPI to 300 DPI
*/
function scaleZPL(rawCommands, scaleFactor) {
if (!scaleFactor) {
scaleFactor = 300/203;
}
var sections = rawCommands.split('^');
// ZPL commands to perform conversion on
var cmds = ['FO', 'A0', 'A@', 'LL', 'LH', 'GB', 'FB', 'BY', 'B3', 'FT'];
var output = '';
for (var i in cmds) {
for (var j in sections) {
if (sections[j].indexOf(cmds[i]) === 0) {
sections[j] = scaleSection(cmds[i], sections[j], scaleFactor);
}
}
}
return sections.join('^');
}
/*
* Scales all integers found in a designated section
*/
function scaleSection(cmd, section, scaleFactor) {
section = section.slice(cmd.length, section.length);
parts = section.split(',');
for (var p in parts) {
if (isInt(parts[p])) {
parts[p] = Math.round(scaleFactor * parts[p]);
}
}
return cmd + parts.join();
}
/*
* Checks if a string is an integer
*/
function isInt(value) {
return !isNaN(value) &&
parseInt(Number(value)) == value &&
!isNaN(parseInt(value, 10));
}
@timdw

This comment has been minimized.

Copy link

@timdw timdw commented Nov 11, 2016

Hi,

I used this as the basis for a powershell version - see https://gist.github.com/timdw/391ecb62efd1dde9f6af017ead208ec9

Thanks!

Tim

@alethea

This comment has been minimized.

Copy link

@alethea alethea commented May 10, 2017

I added some additional scaling functionality for barcodes: https://gist.github.com/alethea/3e409b0b1206099bee88eefac7fa7cbd

@isatufan

This comment has been minimized.

Copy link

@isatufan isatufan commented Apr 18, 2020

C# .NET version at isatufan/ZPLHandler.cs

@enovision

This comment has been minimized.

Copy link

@enovision enovision commented Oct 10, 2020

I added a PHP version at: gist.

I added the 'FT' tag to the cmds array.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.