В основном это выглядит как: < /p>
Код: Выделить всё
// background script fragment
const url = 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf';
(async () => {
const tab = await chrome.tabs.create({ url });
await new Promise(resolve => setTimeout(resolve, 2000));
if (tab.id !== undefined) {
const response = await chrome.tabs.sendMessage(tab.id, { action: 'EXTRACT_TAB_DATA', url });
// case "extract text from PDF" -- undefined
// case "set text by copy and paste" -- object with key result == "Dummy PDF file copy pasted content"
console.log(response);
}
})();
< /code>
// case "extract text from PDF" content script fragment
import * as pdfjsLib from 'pdfjs-dist';
pdfjsLib.GlobalWorkerOptions.workerSrc = chrome.runtime.getURL('pdf.worker.js');
chrome.runtime.onMessage.addListener(async (message, sender, sendResponse) => {
if (message.action === 'EXTRACT_TAB_DATA') {
const pdfData = await fetch(message.url).then(res => res.arrayBuffer());
const pdf = await pdfjsLib.getDocument({ data: pdfData }).promise;
let text = '';
for (let i = 1; i item.str).join(' ') + '\n';
}
console.log(text); // here everything as expected: text is in console
sendResponse({ result: text });
return true;
}
return true;
});
< /code>
// case "set text by copy and paste" content script fragment
import * as pdfjsLib from 'pdfjs-dist';
pdfjsLib.GlobalWorkerOptions.workerSrc = chrome.runtime.getURL('pdf.worker.js');
chrome.runtime.onMessage.addListener(async (message, sender, sendResponse) => {
if (message.action === 'EXTRACT_TAB_DATA') {
const text = 'Dummy PDF file copy pasted content';
sendResponse({ result: text });
return true;
}
return true;
});
< /code>
used version of pdfjs-dist
Мой манифестный фрагмент файла < /p>
{
"manifest_version": 3,
"action": {
"default_title": "Open sidebar",
"default_icon": "img/logo-48.png"
},
"options_page": "options.html",
"background": {
"service_worker": "service-worker-loader.js",
"type": "module"
},
"content_scripts": [
{
"matches": [
"http://*/*",
"https://*/*"
],
"js": [
"src/contentScript/index.ts-loader.js"
]
}
],
"web_accessible_resources": [
{
"resources": [
"img/logo-16.png",
"img/logo-32.png",
"img/logo-48.png",
"img/logo-128.png"
],
"matches": []
},
{
"matches": [
""
],
"resources": [
"**/*",
"*"
],
"use_dynamic_url": false
}
],
"permissions": [
"sidePanel",
"storage",
"identity",
"activeTab",
"tabs",
"scripting"
],
"host_permissions": [
""
]
}
< /code>
what is wrong with sending back message from content to background script in case extract from pdf?
Подробнее здесь: https://stackoverflow.com/questions/796 ... n-response