javascript - 通过pdf.js解码奇怪的字符

标签 javascript pdf 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,例如getTextContext()。请参阅 http://github.com/mozilla/pdf.js/tree/master/examples/text-only 更好的示例

关于javascript - 通过pdf.js解码奇怪的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37138137/

相关文章:

javascript - JavaScript 中的匿名回调无法正常工作

java - xfa.fillXfaForm 之后透明图像显示为黑框。 xfa 填充是否支持透明图像?

HtmlRenderer 和 PDFsharp 为每个页面添加页脚

javascript - 使用 PDF.js 进行双指缩放

javascript - 使用 JavaScript 转义动态字符串中的撇号

javascript - 如何在 WordPress 中加载 pdf Worker javascript

javascript - Angular-nvD3 向圆环图添加标题

javascript - 浏览器游戏保护

javascript - 使用元素的 jQuery 对象和 :contains

php - pdflib-sh : phpize: command not found