从chrome扩展中的pdf中提取文本

时间:2014-09-18 12:44:12

标签: javascript pdf google-chrome-extension

我正在开发Chrome扩展程序。我想知道的是弹出窗口可以显示pdf中的文本。我搜索了PDF.js,并在chrome扩展的backgroud.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);
     }
    });

清单如下所示:

{
    "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
}

popup.html显示如下:

<!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?

1 个答案:

答案 0 :(得分:0)

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

清单中的

background.scriptcontent_scripts[i].js键是一个数组,换句话说就是一个有序列表。

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

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

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

同样适用于HTML中<script>标记的顺序,例如在popup.html