我正在玩pdf.js将pdf转换为文本。我注意到显示了一些奇怪的字符,但只显示在HTML中。
渲染时,会显示正确的内容(人类可读的文字)。
但是,如果我使用innerHTML
来获取内容,我会得到奇怪的东西。
生成此HTML的代码部分取自here,并且是:
this.pdfToText = function(data) {
var div = document.getElementById('viewer');
// render the first pages
var pdf = new PDFJS.PDFDoc(data);
var total = pdf.numPages;
for (i = 1; i <= total; i++) {
var page = pdf.getPage(i);
var canvas = document.createElement('canvas');
document.body.appendChild(canvas);
canvas.id = 'page' + i;
canvas.mozOpaque = true;
div.appendChild(canvas);
canvas.width = page.width;
canvas.height = page.height;
var context = canvas.getContext('2d');
context.save();
context.fillStyle = 'rgb(255, 255, 255)';
context.fillRect(0, 0, canvas.width, canvas.height);
context.restore();
self.setMessage("Rendering...");
var textLayer = document.createElement('div');
textLayer.className = 'textLayer';
document.body.appendChild(textLayer);
page.startRendering(context, function() {
if (++self.complete == total) {
self.setMessage("Finished rendering. Extracting text...");
window.setTimeout(function() {
var layers = [];
var nodes = document.querySelectorAll(".textLayer > div");
for (var j = 0; j < nodes.length; j++) {
layers.push(nodes[j].textContent + "\n");
}
self.sendOutput(layers.join("\n"));
self.setMessage("Done!");
}, 1000);
}
}, textLayer);
}
};
如何将这些字符解码为人类可读的文本并将值存储到变量中?
答案 0 :(得分:1)
上面示例中使用的PDF.js版本是旧版本 - 新版本添加文本提取API,例如getTextContext()。请参阅http://github.com/mozilla/pdf.js/tree/master/examples/text-only
上的更好示例