Select pdf 文档 'embed' 内的文本

Select Text within 'embed' for pdf document

我试图从一个显然使用 'embed' 显示 pdf window 的网站上抓取信息。代码很简单,我找到了发送信息的方法。

如果我 'ctrl + a' pdf window,它将 select 一切。到那时,我现在可以根据需要通过消息发送信息了。

我的问题是,我需要一种方法 select 并自动设置信息范围。最好不要手动。

html 非常简单:

<html>
<head>
</head>
<body class="pdf">
<embed name="0111111" style="position:absolute; left: 0; top: 0;" width="100%" height="100%" src="about:blank" type="application/pdf" internalid="0111111">
</body>
</html>

这就是全部。这些东西显然在嵌入物中。正如我所说,我可以 'ctrl + a' 并突出显示所有内容并根据需要获取发送的信息,但我似乎无法弄清楚如何自动 select 嵌入的文本。

我当前的代码是:

// Send Selected Info Inside PDF
document.querySelector('embed').postMessage({type: 'getSelectedText'}, '*');

// Listen for info inside PDF
window.addEventListener("message", (event) => {
  console.log(event.data.selectedText);
}, false);

有什么想法吗?

您无法在浏览器中通过 javascript 访问 embed 标签内的 pdf 内容。

建议如果你在Node.js环境下,得到pdf文件url后,你可以下载后在npm上搜索pdf解析器解压此文件的文本内容。

document.querySelector('embed').postMessage({type: 'selectAll'});

这非常有效...您将其放入内容脚本中。

window.addEventListener("message", (event) => {
  console.log(event.data.selectedText);
}, false);

const script = document.createElement('script');

script.textContent = `(${() => {
        document.querySelector('embed').postMessage({type: 'selectAll'});
        document.querySelector('embed').postMessage({type: 'getSelectedText'}, '*');
      }})()`;
document.documentElement.appendChild(script);
script.remove();