繁体   English   中英

怎么样? 将PDF解析为Javascript数组?

[英]How? Parser PDF to Javascript Array?

如何使用JavaScript手动将PDF文档解析为单词数组。 我不在乎图像,数字,表格,只在乎文字,因为我可以将其作为JavaScript对象使用。

假设您具有PDF的内容,则可以下载pdftotext并:

函数App(){var self = this; this.complete = 0;

  this.pdfToText = function(data){            
    // 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');
      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);
    }
  };
  }

  this.receiveInput = function(event){
    if (event.source != parent) return;
    if (!event.data.byteLength) return alert("The PDF data needs to be an ArrayBuffer");
    self.setMessage("Received data");
    self.pdfToText(event.data);
  }

  this.sendOutput = function(text){
    var recipient = parent.postMessage ? parent : (parent.document.postMessage ? parent.document : undefined);
    recipient.postMessage(text, "*");
  };

  this.setMessage = function(text){
    text = text.split(' ');
    console.log(text);
  }

  window.addEventListener("message", self.receiveInput, true);
  self.setMessage("Ready");
  self.sendOutput("ready");

并输入您的onchange App()

DEMO(在某些浏览器中不起作用)这将从PDF中记录一系列单词(带标点符号)。

有一个著名的JavaScript库jspdf 它的getTextContent()函数在您的情况下将非常有用。 查看以下两个示例:

https://stackoverflow.com/a/20522307/2117492

https://groups.google.com/d/msg/mozilla.dev.pdf-js/Qzq-xA2MHjs/nmlpttSIJcsJ

使用pdf.js ,我可以这样做:

var pdf = require("pdf.js");
PDFJS.getDocument('document.pdf').then(function(pdf){
  pdf.getPage(1).then(function(page){
    page.getTextContent().then(function(txt){
      var arrayOfText = items.map(function(item){
        return item.str;
      });
    });
  });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM