Javascript 在chrome extensions中从pdf中提取文本

Javascript 在chrome extensions中从pdf中提取文本,javascript,pdf,google-chrome-extension,Javascript,Pdf,Google Chrome Extension,我正在开发一个chrome扩展。我想实现的是,弹出窗口可以显示pdf中的文本。我搜索了PDF.js,并在chrome extensions的background.js中编写了以下代码进行测试: ‘use strict’; var pdf = PDFJS.getDocument('http://www.pacer.gov/documents/pacermanual.pdf'); var pdf = PDFJS.getDocument('pacermanual.pdf'); pd

我正在开发一个chrome扩展。我想实现的是,弹出窗口可以显示pdf中的文本。我搜索了PDF.js,并在chrome extensions的background.js中编写了以下代码进行测试:

‘use strict’;
var pdf = PDFJS.getDocument('http://www.pacer.gov/documents/pacermanual.pdf');


    var pdf = PDFJS.getDocument('pacermanual.pdf');
    pdf.then(function(pdf) {
     var maxPages = pdf.pdfInfo.numPages;
     for (var j = 1; j <= maxPages; j++) {
        var page = pdf.getPage(j);

        // the callback function - we create one per page
        var processPageText = function processPageText(pageIndex) {
          return function(pageData, content) {
            return function(text) {
              // bidiTexts has a property identifying whether this
              // text is left-to-right or right-to-left
              for (var i = 0; i < text.bidiTexts.length; i++) {
                str += text.bidiTexts[i].str;
              }

              if (pageData.pageInfo.pageIndex === 
                  maxPages - 1) {
                // later this will insert into an index
                console.log(str);
              }
            }
          }
        }(j);

        var processPage = function processPage(pageData) {
          var content = pageData.getTextContent();

          content.then(processPageText(pageData, content));
        }

        page.then(processPage);
     }
    });
popup.html如下所示:

{
    "name": "englishhelper",
    "version": "0.0.1",
    "description": "",
    "permissions": [
        "tabs", "http://*/*", "https://*/*"
    ],
    "background":{
       "script":["background.js","PDF.js"]
    },
    "browser_action":{
        "default_icon":"icon_png",
        "default_popup":"popup.html"
    },

    "manifest_version": 2
}
<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" type="text/css" href="popup.css">
    <title></title>
</head>
<body>
<script src="background.js"></script>
<script src="PDF.js"></script>
</body>
</html>


控制台显示“未定义PDFJS”。“PDF.js”已包含在popup.html中。chrome扩展是否可能使用了PDF.js?

错误的加载顺序。(我们对此有一个规范问题吗?)

background.script
content\u scripts[i].js
清单中的键是一个数组,换句话说是一个有序列表

脚本按照此处定义的顺序加载和执行;您需要确保在使用库之前已加载库

在您的情况下,您需要交换它们:

"background":{
   "script": ["PDF.js", "background.js"]
},

这同样适用于HTML中
标记的顺序,例如在
popup.HTML

中,您的代码位于背景页中,但库不包括在其中。你期待什么?对不起,我没有解释清楚。“PDF.js”已被下载并添加到popup.html中,如@XanIs
background.js
,尽管名称不同,是否也在弹出窗口中执行?如果不是,它们是两个独立的上下文。总而言之,请将您的清单包含在问题中。@Xan感谢您多次的回复。清单和弹出窗口已显示在上方
PDF.js
文件中的内容是什么?API看起来像Mozilla的PDF.js库,但控制台中的错误表明您没有正确地包含PDF.js。抱歉,更改顺序后它仍然无法工作。不过这将是一个单独的问题。