document-server/src/asyncHelpers.ts

45 lines
13 KiB
TypeScript

import AsyncHelpers from "async-helpers";
import bwipjs from "bwip-js";
export const asyncHelpers = new AsyncHelpers();
async function generateBarcode(str, options, emtpy, cb) {
if (str == null) { cb(null, "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+P+/HgAFhAJ/wlseKgAAAABJRU5ErkJggg=="); return; }
let res = await generateBase64Barcode(options.toString(), str.toString());
cb(null, res);
}
generateBarcode.async = true;
asyncHelpers.set('--bc', generateBarcode);
export const helpers = asyncHelpers.get({ wrap: true });
export async function generateBase64Barcode(type: string, content: string): Promise<String> {
let options = {
bcid: type,
text: content,
scale: 4,
height: 10,
width: 10,
includetext: true,
textxalign: 'center'
}
if (type != "qrcode") {
delete options.width;
}
try {
const barcode: Buffer = await bwipjs.toBuffer(options);
return `data:image/png;base64,${barcode.toString('base64')}`;
}
catch {
return errorimage;
}
}
export async function awaitAsyncHandlebarHelpers(input: string): Promise<string> {
return await new Promise((resolve, reject) => {
asyncHelpers.resolveIds(input, (err, data) => {
if (err) { reject(err) }
resolve(data)
});
});
}
const errorimage = "data:image/png;base64,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"