@nplayfair/npe_gerber

Create a PCB image from gerber files

Usage no npm install needed!

<script type="module">
  import nplayfairNpeGerber from 'https://cdn.skypack.dev/@nplayfair/npe_gerber';
</script>

README

npe_gerber

npm (scoped)

This is still being developed and isn't ready for production! Only tested with gerbers generated by EAGLE.

Requires node version 10 or higher.

Usage

Save a PNG file

const { ImageGenerator } = require('@nplayfair/npe_gerber');

const folderConfig = {
    tmpDir: path.join(__dirname, 'tmp'),
    imgDir: path.join(__dirname, 'img')
}

const imageConfig = {
    resizeWidth: 600,
    density: 1000,
    compLevel: 1
}

const layerNames = [
  'CAMOutputs/DrillFiles/drills.xln',
  'CAMOutputs/GerberFiles/copper_top.gbr',
  'CAMOutputs/GerberFiles/silkscreen_top.gbr',
  'CAMOutputs/GerberFiles/soldermask_top.gbr',
  'CAMOutputs/GerberFiles/solderpaste_top.gbr',
  'CAMOutputs/GerberFiles/profile.gbr',
];

const gerberArchive = '/path/to/gerber.zip';

const fileProc = new ImageGenerator(folderConfig, imageConfig, layerNames);

fileProc.gerberToImage(gerberArchive)
      .then(filename => {
        console.log(`Generated image ${filename}`);
      })

Return a PNG stream

const { ImageGenerator } = require('@nplayfair/npe_gerber');

const folderConfig = {
    tmpDir: path.join(__dirname, 'tmp'),
    imgDir: path.join(__dirname, 'img')
}

const imageConfig = {
    resizeWidth: 600,
    density: 1000,
    compLevel: 1
}

const layerNames = [
  'CAMOutputs/DrillFiles/drills.xln',
  'CAMOutputs/GerberFiles/copper_top.gbr',
  'CAMOutputs/GerberFiles/silkscreen_top.gbr',
  'CAMOutputs/GerberFiles/soldermask_top.gbr',
  'CAMOutputs/GerberFiles/solderpaste_top.gbr',
  'CAMOutputs/GerberFiles/profile.gbr',
];

const gerberArchive = '/path/to/gerber.zip';

const fileProc = new ImageGenerator(folderConfig, imageConfig, layerNames);

fileProc.gerberToStream(gerberArchive)
      .then(stream => {
        // Do something with the stream
      })

Layer Names

The constructor must be passed an array of filenames that correspond to the layers in the gerber archives you expect to be uploaded. The example above shows which names are used by EAGLE but other applications may use different filenames.

Image Processing Configuratation

Several values need to be set in the image configuration object. An SVG vector is first created as an intermediate step before being converted to a PNG. These correspond to the parameters passed to sharp for resizing the intermediary SVG and output PNG file. These settings are:

  • resizeWidth: Width in pixels of the output image.
  • density: DPI to create the SVG with. Low values will result in a poor quality output image.
  • compLevel: PNG compression level.

More information about these settings can be found in the sharp documentation.