Skip to content

Instantly share code, notes, and snippets.

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'];
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

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

commented May 10, 2017

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

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.