Javascript 使用pdf.js呈现pdf时,如何重新设置单词的样式?

Javascript 使用pdf.js呈现pdf时,如何重新设置单词的样式?,javascript,pdf,pdf.js,Javascript,Pdf,Pdf.js,当我使用pdf.js运行pdf时,我希望能够重新设置一些单词的样式(例如突出显示),这可能吗?是的,在使用pdf.js时可以突出显示单词 作为一个页面包含 画布(用于渲染内容) HtmlLevel(用于未呈现的文本内容) 您可以使用后者来选择文本元素 访问浏览器上的,您可以通过document.getSelection()获取选择 以下代码演示了如果所选文本(内部)不跨多个HTMLElement时如何执行此操作: var s = document.getSelection(); var o

当我使用pdf.js运行pdf时,我希望能够重新设置一些单词的样式(例如突出显示),这可能吗?

是的,在使用pdf.js时可以突出显示单词

作为一个页面包含

  • 画布(用于渲染内容)
  • HtmlLevel(用于未呈现的文本内容)
您可以使用后者来选择文本元素

访问浏览器上的,您可以通过
document.getSelection()
获取选择

以下代码演示了如果所选文本(内部)不跨多个HTMLElement时如何执行此操作:

var s = document.getSelection();

var oldstr = s.anchorNode.textContent;
var textBeforeSelection = oldstr.substr(0, s.anchorOffset);
var textInsideSelection = oldstr.substr(s.anchorOffset, s.focusOffset - s.anchorOffset);
var textAfterSelection  = oldstr.substr(s.focusOffset, oldstr.length - s.focusOffset);

foo.anchorNode.parentElement.innerHTML
  = textBeforeSelection 
  + "<span class='highlight'>" 
  + textInsideSelection 
  + "</span>" 
  + textAfterSelection;
var s=document.getSelection();
var oldstr=s.anchorNode.textContent;
var textBeforeSelection=oldstr.substr(0,s.AnchoroOffset);
var textInsideSelection=oldstr.substr(s.AnchoroOffset,s.focusOffset-s.AnchoroOffset);
var textAfterSelection=oldstr.substr(s.focusOffset,oldstr.length-s.focusOffset);
foo.anchorNode.parentElement.innerHTML
=选择前的文本
+ "" 
+文本内部选择
+ "" 
+选举后的选举;
对于跨越多个(内部)HTMLElement的选择,您可以通过依次调用
nextSibling
直到到达
s.focusNode
来从
s.anchorNode
开始遍历DOM

我说可能,因为元素在文档中的位置顺序与它们在视图中的顺序不同

假设
s.anchorNode
不是
s.focusNode

  • s.anchorNode
    将从0突出显示到
    s.anchorOffset
  • s.focusNode
    s.focusOffset
    到节点和
  • 它们之间的所有节点都可以完全高亮显示
这对文本节点有效(或者至少可能有效)——通过在每个非文本节点周围加亮显示范围,可以将这一想法扩展到非文本节点