<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>TIFF</title> <style type="text/css"> figure { border: 1px solid #000; } figcaption { border-bottom: 1px solid #000; padding: 0.25em; background-color: #ccc; } </style> </head> <body> <script type="text/javascript" src="/adapter/UTIF.js"></script> <script type="text/javascript"> function request(method, url, responseType) { return new Promise(function(resolve, reject) { var xhr = new XMLHttpRequest(); xhr.open(method, url); if(responseType) xhr.responseType = responseType; xhr.onload = resolve; xhr.onerror = reject; xhr.send(); }); } function createElementX(tag, attrs) { var res = document.createElement(tag); if(attrs) for(var k in attrs) if(attrs.hasOwnProperty(k)) res.setAttribute(k, attrs[k]); for(var i = 2, child; i < arguments.length; ++i) res.appendChild((typeof (child = arguments[i]) === 'string') || (child instanceof String) ? document.createTextNode(child) : child); return res; } var pathname = window.location.pathname, filename = document.title = pathname.split('/').pop(); var body = document.body; var header = document.createElement('div'); header.append(createElementX('a', { href: pathname }, 'Download ' + filename)) body.appendChild(header); request('GET', pathname, 'arraybuffer').then(function(evt) { var filedata = evt.target.response; var cnv = document.createElement('canvas'), ctx = cnv.getContext('2d'), img; var pages = UTIF.decode(filedata), page; for(var i = 0; i < pages.length; ++i) { UTIF.decodeImage(filedata, page = pages[i], pages); var rgba = UTIF.toRGBA8(page); ctx.putImageData(new ImageData(new Uint8ClampedArray(rgba.buffer), cnv.width = page.width, cnv.height = page.height), 0, 0); body.appendChild(createElementX('figure', null, createElementX('figcaption', null, 'Page ' + (i + 1) + ' of ' + pages.length), img = createElementX('img', { src: cnv.toDataURL() }))); img.style.width = '100%'; } }) </script> </body> </html>