Javascript 在chrome extensions中从pdf中提取文本
我正在开发一个chrome扩展。我想实现的是,弹出窗口可以显示pdf中的文本。我搜索了PDF.js,并在chrome extensions的background.js中编写了以下代码进行测试: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
‘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中,如@XanIsbackground.js
,尽管名称不同,是否也在弹出窗口中执行?如果不是,它们是两个独立的上下文。总而言之,请将您的清单包含在问题中。@Xan感谢您多次的回复。清单和弹出窗口已显示在上方PDF.js
文件中的内容是什么?API看起来像Mozilla的PDF.js库,但控制台中的错误表明您没有正确地包含PDF.js。抱歉,更改顺序后它仍然无法工作。不过这将是一个单独的问题。