pdf.js text color extraction

HTML

<script src="https://cdn.rawgit.com/mozilla/pdf.js/gh-pages/build/pdf.js"></script>
<input id="files" type="file" />
<div id="result"></div>

CSS

#result {
    margin-top: 20px;
}

JavaScript

var input = document.getElementById("files");
input.addEventListener("change", function (e) {
    var file = e.target.files[0],
        reader = new FileReader();

    reader.onload = function () {
        readPdf(reader.result);
    }
    reader.readAsArrayBuffer(file);
});

function readPdf(buffer) {
    PDFJS.disableWorker = true;
    PDFJS.getDocument(buffer).then(function (pdf) {
        var page, texts;
        pdf.getPage(1).then(function (_page) {
            page = _page;
            return page.getTextContent();
        }).then(function (content) {
            texts = content.items;
            return renderToCanvas(page);
        }).then(function (imgData) {
            console.time('color');
            parseColors(imgData, texts);
            console.timeEnd('color');
            printTexts(texts);
        }).catch(function(e){console.log(e);});
    });
}

function renderToCanvas(page) {
    var viewport = page.getViewport(1);
    var canvas = document.createElement('canvas');
    var context = canvas.getContext('2d');
    canvas.height = viewport.height;
    canvas.width = viewport.width;
    var renderContext = {
        canvasContext: context,
        viewport: viewport
    };
    return page.render(renderContext).then(function () {
        return context.getImageData(0, 0, viewport.width, viewport.height);
    });
}

function printTexts(texts) {
    var out = "";
    texts.forEach(function (text) {
        var rgb = text.color;
        out += '<span style="color: rgb(' + rgb[0] + ',' + rgb[1] + ',' + rgb[2] + ');">' + text.str + '</span>';
    });
    document.getElementById("result").innerHTML = out;
}


function parseColors(imgData, texts) {
    var data = imgData.data,
        width = imgData.width,
        height = imgData.height,
        defaultColor = [0, 0, 0],
        minVariance = 20;

    texts.forEach(function (t) {
        var left = Math.floor(t.transform[4]),
            w = Math.round(t.width),
            h =...