通过 pdf.js 解码奇怪的字符
Decode weird characters by pdf.js
我正在使用 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,例如获取文本上下文()。请在 http://github.com/mozilla/pdf.js/tree/master/examples/text-only
查看更好的示例
我正在使用 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,例如获取文本上下文()。请在 http://github.com/mozilla/pdf.js/tree/master/examples/text-only
查看更好的示例