89 lines
1.9 KiB
JavaScript
89 lines
1.9 KiB
JavaScript
|
|
import {
|
|
Label,
|
|
Grid,
|
|
Text,
|
|
Line,
|
|
Box,
|
|
Circle,
|
|
Barcode,
|
|
FontFamily,
|
|
PrintDensity,
|
|
Spacing,
|
|
SizeType
|
|
} from "jszpl";
|
|
|
|
import {
|
|
Printer as PrinterTable
|
|
} from "../sequelize/printer.model.mjs";
|
|
|
|
import {
|
|
Template as TemplateTable
|
|
} from "../sequelize/template.model.mjs";
|
|
|
|
import {
|
|
Medium as MediaTable
|
|
} from "../sequelize/media.model.mjs";
|
|
|
|
import {
|
|
Queue as QueueTable
|
|
} from "../sequelize/queue.model.mjs";
|
|
|
|
import {
|
|
Job as JobTable
|
|
} from "../sequelize/job.model.mjs";
|
|
|
|
|
|
|
|
|
|
export async function GenerateZPL(queueId, limit = undefined)
|
|
{
|
|
let queue = await QueueTable.findByPk(queueId);
|
|
let printer = await queue.getPrinter();
|
|
let medium = await printer.getMedium();
|
|
|
|
let jobs = await queue.getJobs({
|
|
limit
|
|
});
|
|
|
|
var Result = '';
|
|
|
|
while (jobs.length > 0) {
|
|
// get jobs for row
|
|
let nextJobs = jobs.splice(0, medium.columns);
|
|
|
|
// generate new Label
|
|
const label = new Label();
|
|
label.printDensity = new PrintDensity(printer.density);
|
|
label.width = 100;
|
|
label.height = 50;
|
|
label.padding = new Spacing(10);
|
|
|
|
// generate Grid
|
|
const grid = new Grid();
|
|
label.content.push(grid);
|
|
grid.border = 1;
|
|
grid.columnSpacing = 2;
|
|
grid.rowSpacing = 0;
|
|
|
|
for (let cIndex = 0; cIndex < medium.columns; cIndex++) {
|
|
grid.columns.push(new Size(1, SizeType.Relative));
|
|
}
|
|
|
|
grid.rows.push(new Size(1, SizeType.Relative));
|
|
|
|
nextJobs.forEach((job, columnNumber) => {
|
|
|
|
let template = job.getTemplate();
|
|
const text = new Text();
|
|
label.content.push(text);
|
|
text.fontFamily = new FontFamily("0");
|
|
text.text = 'Hello World!';
|
|
|
|
});
|
|
|
|
Result += label.generateZPL();
|
|
}
|
|
|
|
return Result;
|
|
}
|