Windows MetaFile (wmf) processor
Go to file
2020-03-16 12:32:12 -04:00
.github 1.0.0: a new hope 2020-02-29 23:55:36 -05:00
dist 1.0.1: poly fill/stroke color 2020-03-09 17:18:57 -04:00
js 1.0.1: poly fill/stroke color 2020-03-09 17:18:57 -04:00
misc 1.0.1: poly fill/stroke color 2020-03-09 17:18:57 -04:00
src 1.0.1: poly fill/stroke color 2020-03-09 17:18:57 -04:00
test 1.0.0: a new hope 2020-02-29 23:55:36 -05:00
.gitignore 1.0.1: poly fill/stroke color 2020-03-09 17:18:57 -04:00
index.html 1.0.0: a new hope 2020-02-29 23:55:36 -05:00
LICENSE 1.0.0: a new hope 2020-02-29 23:55:36 -05:00
Makefile 1.0.0: a new hope 2020-02-29 23:55:36 -05:00
package.json version bump 1.0.2: fix node version 2020-03-16 12:32:12 -04:00
README.md version bump 1.0.2: fix node version 2020-03-16 12:32:12 -04:00
tsconfig.json 1.0.0: a new hope 2020-02-29 23:55:36 -05:00

js-wmf

Processor for Windows MetaFile (WMF) files in JS (for the browser and nodejs).

Installation

With npm:

$ npm install wmf

In the browser:

<script src="wmf.js"></script>

The browser exposes a variable WMF.

Usage

The data argument is expected to be an ArrayBuffer, Uint8Array or Buffer

  • WMF.image_size(data) extracts the image offset and extents, returns an Array [width, height] where both metrics are measured in pixels.

  • WMF.draw_canvas(data, canvas) parses the WMF and draws to a Canvas.

Notes

  • The library assumes the global ImageData is available. For nodejs-powered canvas implementations, a shim must be exposed as a global. Using the canvas npm package:
const { createImageData } = require("canvas");
global.ImageData = createImageData;
  • OffscreenCanvas in Chrome and some other Canvas implementations require the dimensions in the constructor:
const size = WMF.image_size(data);
const canvas = new OffscreenCanvas(size[0], size[1]);

Examples

Browser Fetch into canvas (click to show)
// assume `canvas` is a DOM element
(async() => {
  const res = await fetch("url/for/image.wmf");
  const ab = await res.arrayBuffer();
  WMF.draw_canvas(ab, document.getElementById("canvas"));
})();
NodeJS (using `canvas` npm module) (click to show)
const { createCanvas, createImageData } = require("canvas");
global.ImageData = createImageData;

const size = WMF.image_size(data);
const canvas = createCanvas(size[0], size[1]);
WMF.draw_canvas(data, canvas);

License

Please consult the attached LICENSE file for details. All rights not explicitly granted by the Apache 2.0 License are reserved by the Original Author.

References

  • MS-WMF: Windows Metafile Format