PDFJS文字高亮原理

PDFJS是一个用于显示PDF的模块,主要用于前端显示PDF,但是这个库使用起来还是比较复杂的,主要是由于缺乏API文档,很多时候主要是依靠看源码。

pdf的显示主要分为两种模式:一个是svg的格式、另一个是图片格式;这里的区别是svg格式放大缩小pdf始终保持清新,而图片模式的话放大会变模糊;

同时图片模式的一个致命缺点是,文字不能选择,而svg是可以的;

在前端的话使得文字可以高亮选择,主要还是依靠html原本的文字标签;

将文字标签和pdf的文字样式对齐,即可实现文字可选,看起来是在选pdf上的文字,实际上是选择的文字标签里的文字;


可以看到图片中一个page被分成了文字层和画布层;

renderTextLayer({
      textContent: this.textContent,
      textContentStream: this.textContentStream,
      container: textLayerFrag,
      viewport: this.viewport,
      textDivs: this.textDivs,
      textContentItemsStr: this.textContentItemsStr,
      timeout,
      enhanceTextSelection: this.enhanceTextSelection,
    });

通过pdfjs里的renderTextLayer方法就可将文字完全重合地显示到新的标签中;

posted @ 2022-06-13 21:37  DarrenHe  阅读(2008)  评论(0编辑  收藏  举报