我正在开发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?
答案 0 :(得分:0)
错误的加载顺序。 (我们有一个规范问题吗?)
清单中的 background.script
或content_scripts[i].js
键是一个数组,换句话说就是一个有序列表。
脚本按照那里定义的顺序加载和执行;您需要确保库在使用之前已加载。
在你的情况下,你需要交换它们:
"background":{
"script": ["PDF.js", "background.js"]
},
同样适用于HTML中<script>
标记的顺序,例如在popup.html