我正在使用 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);
}
};
如何将这些字符解码为人类可读的文本并将值存储到变量中?
最佳答案
上面示例中使用的 PDF.js 版本是旧版本 - 新版本添加了文本提取 API,例如getTextContext()。请参阅 http://github.com/mozilla/pdf.js/tree/master/examples/text-only 更好的示例
关于javascript - 通过pdf.js解码奇怪的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37138137/