const pcbStackup = require('pcb-stackup'); const sharp = require('sharp'); const path = require('path'); const fileProc = require('./fileProcessor.js'); // Configuration const config = { resizeWidth: 600, density: 1000, compLevel: 1, } // Functions function gerberToImage(gerber, imageName) { return new Promise((resolve, reject) => { const destFile = path.join(__dirname, 'gerber', 'pcb', imageName); fileProc.getLayers(gerber) .then(layers => { pcbStackup(layers).then(stackup => { // Create buffer from SVG string sharp(Buffer.from(stackup.top.svg), { density: config.density }) .resize({ width: config.resizeWidth }) .png({ compressionLevel: config.compLevel }) .toFile(destFile) .then((info) => { // Succesful fileProc.cleanupFiles(); resolve(info); }) .catch((e) => { fileProc.cleanupFiles(); reject(e); }) }) .catch((e) => { reject(e); }); }) }) } gerberToImage('./gerber/Timmy.zip', 'timmy.png').then(info => console.log(info)) .catch(e => { console.error(e); })