Is there a way to convert a signature (.svg file) into a png? The reason we would want to convert it to png is because the service that we’re uploading the signature to doesn’t support previewing svgs, but it does support pngs.
Hi Alex
I did some googling and found an NPM package that will do the conversion in memory, as opposed to in some chromium window or on the file system which is not supported in Cloud Code.
Below code should work for you use case
const svg2img = require('svg2img');
export async function run() {
// get the object that has the signature attachment
var object = await DB.object.first();
// get the URLS for that signature attachment
var urls = object.signature_field.urls;
// use the svg URL which is a link to the raw SVG data
var svgUrl = urls.svg;
// fetch the raw data from the URL
let svgResponse = await fetch(svgUrl);
if (svgResponse.ok) {
// parse the raw data from the fetch response
let svgData = await svgResponse.text();
// Convert from svg string - returns a Buffer
svg2img(svgData, async function(error, buffer) {
// use Buffer to create new PNG attachment
var png = await Attachment.create({filename: 'signature.png', data: buffer});
// store PNG attachment wherever
object.signature_png_field = png;
await object.save()
});
}
}