Windows MetaFile (wmf) processor
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
SheetJS 3bf5459c6f
version bump 1.0.2: fix node version
3 years ago
.github 1.0.0: a new hope 3 years ago
dist 1.0.1: poly fill/stroke color 3 years ago
js 1.0.1: poly fill/stroke color 3 years ago
misc 1.0.1: poly fill/stroke color 3 years ago
src 1.0.1: poly fill/stroke color 3 years ago
test 1.0.0: a new hope 3 years ago
.gitignore 1.0.1: poly fill/stroke color 3 years ago
LICENSE 1.0.0: a new hope 3 years ago
Makefile 1.0.0: a new hope 3 years ago
README.md version bump 1.0.2: fix node version 3 years ago
index.html 1.0.0: a new hope 3 years ago
package.json version bump 1.0.2: fix node version 3 years ago
tsconfig.json 1.0.0: a new hope 3 years ago

README.md

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