dymojs
Version:
A pure javascript library for printing labels on a Dymo Labelwriter printer from the browser or from nodejs.
104 lines (84 loc) • 3.21 kB
Markdown
# dymojs
[](https://travis-ci.org/dsandor/dymojs)
#### Wicked simple pure javascript cross platform Dymo Labewriter printing module for Node.js with no platform dependencies.
This module works on **Mac**, **Linux**, and **Windows**.
- no `gyp` build needed
- no `Microsoft Visual Studio` needed.
- no `gcc` or `c++` build needed
### install
```
yarn add dymojs
```
or if you are stuck in the old school
```
npm i dymojs
```
### usage
```
const Dymo = require('dymojs'),
dymo = new Dymo();
dymo.print('DYMO LabelWriter 450', labelXml);
```
render a label preview
```
dymo.renderLabel(labelXml).then(imageData => {
// returns imageData as base64 encoded png.
// use <img src="data:image/png;base64,${imageData}"/>
// or require("fs").writeFile("out.png", imageData, 'base64', function(err) {...});
});
```
### how do I get the xml for a label?
Open the free `DYMO Label` software and design a label. When you have designed one save it. The file it saves is an XML document like the one below. Simply pass that XML or (hint hint) a version of that XML that you did some string replacement on to the print function with a printer name and you are printing labels.
### working example that prints a test label
This example will print TEST123 on a shipping size label (2 1/8" x 4") to a printer named 'DYMO LabelWriter 450'.
```
const Dymo = require('dymojs'),
dymo = new Dymo();
dymo.print('DYMO LabelWriter 450', labelXml);
var labelXml = `
<DieCutLabel Version="8.0" Units="twips">
<PaperOrientation>Landscape</PaperOrientation>
<Id>LargeShipping</Id>
<PaperName>30256 Shipping</PaperName>
<DrawCommands>
<RoundRectangle X="0" Y="0" Width="3331" Height="5715" Rx="270" Ry="270"/>
</DrawCommands>
<ObjectInfo>
<TextObject>
<Name>TEXT</Name>
<ForeColor Alpha="255" Red="0" Green="0" Blue="0"/>
<BackColor Alpha="0" Red="255" Green="255" Blue="255"/>
<LinkedObjectName></LinkedObjectName>
<Rotation>Rotation0</Rotation>
<IsMirrored>False</IsMirrored>
<IsVariable>False</IsVariable>
<HorizontalAlignment>Left</HorizontalAlignment>
<VerticalAlignment>Middle</VerticalAlignment>
<TextFitMode>AlwaysFit</TextFitMode>
<UseFullFontHeight>True</UseFullFontHeight>
<Verticalized>False</Verticalized>
<StyledText>
<Element>
<String>T</String>
<Attributes>
<Font Family="Helvetica" Size="13"
Bold="False" Italic="False" Underline="False" Strikeout="False"/>
<ForeColor Alpha="255" Red="0" Green="0" Blue="0"/>
</Attributes>
</Element>
<Element>
<String>EST123</String>
<Attributes>
<Font Family="Helvetica" Size="13"
Bold="False" Italic="False" Underline="False" Strikeout="False"/>
<ForeColor Alpha="255" Red="0" Green="0" Blue="0"/>
</Attributes>
</Element>
</StyledText>
</TextObject>
<Bounds X="335.9998" Y="57.6001" Width="5337.6" Height="3192"/>
</ObjectInfo>
</DieCutLabel>
`;
```