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.
		
		
		
		
		
			
		
			
				
					
					
					
						
							1.9 KiB
						
					
					
				
			
		
		
	
	
							1.9 KiB
						
					
					
				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 aCanvas.
Notes
- The library assumes the global ImageDatais available. For nodejs-powered canvas implementations, a shim must be exposed as a global. Using thecanvasnpm package:
const { createImageData } = require("canvas");
global.ImageData = createImageData;
- OffscreenCanvasin 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