2017-05-09 29 views
0

我正在尝试使用https://www.npmjs.com/package/pdfjs-dist-for-node来搜索pdf的文本。Pdf.js(用于节点)不呈现pdf的全部内容

我的代码如下所示:

gettext: function(){ 
    var data = '../static/example.pdf'; 
     return pdfjs.getDocument(data).then(function(pdf) { 
    var pages = []; 
    for (var i = 0; i < pdf.numPages; i++) { 
       pages.push(i); 
    } 
    return Promise.all(pages.map(function(pageNumber) { 
       return pdf.getPage(pageNumber + 1).then(function(page) { 
     return page.getTextContent().then(function(textContent) { 
         return textContent.items.map(function(item) { 
      return item.str; 
         }).join(' '); 
     }); 
       }); 
    })).then(function(pages) { 
     return pages.join("\r\n") 
    }); 
     }).then(function(pages){ 
    console.log(pages) 
    }); 


} 

这似乎是工作,但它跳过的文字部分。具体来说,它会跳过我无法用原始pdf文档中的鼠标突出显示的内容。有没有办法让pdf.js获取这些数据?

+0

请参阅https://github.com/mozilla/pdfjs-dist进行官方回购和示例https://github.com/mozilla/pdf.js/blob/master/examples/node/getinfo.js – async5

+0

The找不到pdfjs-dist-for-node的源代码来告知PDF.js分叉有多大,或者它是否是恶意分支。我会建议停止使用它,并开始使用官方叉子。 – async5

+0

@ async5感谢您的支持,我切换到pdfjs-dist。 –

回答

0

如果在查看PDF时文本不可选,则表示它实际上是图片,因此意味着您将无法搜索它。

所以不幸的是,这是不可能的,除非您先设置其他的东西在PDF上做一些OCR,然后尝试将图像转换为文本。

+0

我想要的文本来自可在Acrobat Reader中编辑的字段。当我点击其中一个字段时,它会变成可以编辑的输入(包括复制+粘贴)。如果这些字段是图像,我不认为这是可能的。尽管如此,当我只按下全选,这些不会突出显示。 –