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方法就可将文字完全重合地显示到新的标签中;