最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pdf.js實現pdf檢索對應文本和高亮功能

 更新時間:2025年09月19日 10:27:32   作者:前端初見  
PDF.js是一個強大的JavaScript庫,可以在瀏覽器中渲染PDF文件,無需依賴任何第三方插件,這篇文章主要介紹了pdf.js檢索對應文本和高亮的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

需求場景

本文主要針對網頁端 PDF 本地預覽場景,支持通過關鍵字對 PDF 進行檢索查詢,當點擊檢索結果列表中的對應關鍵字時,可同步在預覽界面中觸發(fā)內容搜索 —— 不僅能精準跳轉到匹配內容所在的 PDF 頁碼,還能對目標文字進行高亮顯示。此外,方案還涵蓋了 iframe 嵌入預覽、文字高亮等核心功能的實現細節(jié),并針對性解決了基于 pdf.js 開發(fā)時常見的跨域問題,為網頁端 PDF 預覽與檢索需求提供了完整技術參考。

技術棧:pdf.js+vue3

1、使用pdf.js+解決pdf.js跨域

pdf.js下載地址

將下載的pdf.js壓縮包解壓并放入到項目中的public文件夾下,如下

在項目的 public/pdfjs/web/viewer.mjs 文件中,搜索關鍵詞 “file origin does not match viewer’s”,找到該關鍵詞所在的異常拋出代碼段,并將其注釋掉。若不進行此注釋操作,會觸發(fā)跨域錯誤,導致 PDF 文件無法正常加載預覽。

2、預覽方案

pdf.js 提供了多種 PDF 預覽方案(如基于 canvas 渲染的方案),本文選用 iframe 嵌入預覽方式:先將 pdf.js 部署為獨立的預覽網站,在生產環(huán)境中,只需通過 iframe 傳入目標 PDF 文件的地址(即 fileUrl),即可快速實現 PDF 預覽功能。需要注意的是,此處的 fileUrl 不僅可以是常規(guī)的文件地址,也可以是通過 URL.createObjectURL() 方法生成的文件流臨時地址。

 <iframe    ref="pdfFrame" width="100%" height="100%" :src="`/pdfjs/web/viewer.html?file=${fileUrl}`" frameborder="0" id="myIframe"></iframe>

3、檢索方案

封裝一個handleSearch方法傳入關鍵字文案,進行檢索查詢

  • 入參:接收 query(string類型,即待搜索的關鍵字文案),并處理空值(默認轉為空字符串)。
  • 核心邏輯
    • 通過 pdfFrame.value.contentWindow 獲取iframe中pdf.js預覽實例的窗口對象;
    • 拿到預覽實例的 findBar(搜索工具欄)對象,若存在則配置搜索參數(設置關鍵字、開啟全量高亮、關閉大小寫敏感);
    • 觸發(fā) find(執(zhí)行搜索)和 highlightallchange(應用高亮)事件,完成檢索與高亮;
    • 異常捕獲:通過try-catch處理搜索過程中的錯誤,打印錯誤日志便于排查。
      通過關聯pdf.js的原生 findBar 能力,封裝成簡潔的檢索方法,同時通過加載狀態(tài)控制和異常處理,保證搜索功能的穩(wěn)定性與可用性。
/**
 * 接收關鍵字文案作為參數
 * @param {string} query - 要搜索的文案
 */
 const handleSearch= (query) => {
  const searchText = query ||''
  try {
    // 獲取PDF Viewer的相關對象
    const frameWindow = pdfFrame.value.contentWindow;
    const findBar = frameWindow.PDFViewerApplication.findBar;
    if (findBar) {
      // 設置搜索參數
      findBar.findField.value = searchText;
      findBar.highlightAll.checked = true; // 高亮所有匹配項
      findBar.caseSensitive.checked = false; // 不區(qū)分大小寫
      
      // 搜索和高亮
      findBar.dispatchEvent(new Event('find'));
      findBar.dispatchEvent(new Event('highlightallchange'));
    }
  } catch (error) {
    console.error('PDF搜索失敗:', error);
  }
};

const pdfFrame = ref(null);
const isPdfLoaded = ref(false);
// 監(jiān)聽iframe加載完成
onMounted(() => {
  const frame = pdfFrame.value;
  //監(jiān)聽 iframe 加載狀態(tài),確保在 PDF 加載完成后才執(zhí)行搜索操作
  if (frame) {
    frame.onload = () => {
      isPdfLoaded.value = true;
      console.log('PDF viewer loaded successfully');
    };
  }
});

使用

handleSearch('你要查詢的文案')

4、實現效果

總結

到此這篇關于pdf.js實現pdf檢索對應文本和高亮功能的文章就介紹到這了,更多相關pdf.js檢索對應文本和高亮內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • javascript將數字轉換整數金額大寫的方法

    javascript將數字轉換整數金額大寫的方法

    這篇文章主要介紹了javascript將數字轉換整數金額大寫的方法,通過自定義函數中的數組替換實現數字轉換整數金額大寫的功能,非常具有實用價值,需要的朋友可以參考下
    2015-01-01
  • 通過Tabs方法基于easyUI+bootstrap制作工作站

    通過Tabs方法基于easyUI+bootstrap制作工作站

    本教程給大家介紹如何制作easyUI+bootstrap工作站,主要學習tabs方法,本文介紹非常詳細,具有參考借鑒價值,需要的朋友參考下吧
    2016-03-03
  • trim原型函數看js正則表達式的性能

    trim原型函數看js正則表達式的性能

    如果你看到別人寫trim函數是用循環(huán)而不用正則表達式來寫,請不要取笑,也許,他們就是高手。如果你很自信你的trim函數效率很高,請看完本文再下結論。
    2008-12-12
  • javascript 實現劃詞標記劃詞搜索功能

    javascript 實現劃詞標記劃詞搜索功能

    在頁面中加上這串代碼就行了,同時還有搜索功能。
    2009-10-10
  • 在js里怎么實現Xcode里的callFuncN方法(詳解)

    在js里怎么實現Xcode里的callFuncN方法(詳解)

    下面小編就為大家?guī)硪黄趈s里怎么實現Xcode里的callFuncN方法(詳解)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • JavaScript判斷DIV內容是否為空的方法

    JavaScript判斷DIV內容是否為空的方法

    整體思路是這樣的:判斷div內部是否為空,如果為空,給出無數據提示;否則顯示正常頁面,下面給大家分享js判斷div內容是否為空的方法,對判斷div內容是否為空的相關知識感興趣的朋友一起學習吧
    2016-01-01
  • JS實用技巧斷點調試過程

    JS實用技巧斷點調試過程

    這段文章詳細介紹了JavaScript調試技巧,包括單步調試、函數調試、斷點調試和事件調試,幫助初學者快速定位和解決問題,文章通過具體操作步驟和示例代碼,深入淺出地講解了調試的關鍵步驟和技巧
    2026-06-06
  • 淺談Javascript嵌套函數及閉包

    淺談Javascript嵌套函數及閉包

    這篇文章其實是要講閉包的一些初級應用,但是為了將閉包,我們還是從嵌套函數開始說吧,縱使所有的JavaScript函數都可以說是閉包,但是只有當一個嵌套函數被導出到它所定義的作用域之外時,這種閉包才是有趣的。
    2010-11-11
  • Bootstrap php制作動態(tài)分頁標簽

    Bootstrap php制作動態(tài)分頁標簽

    這篇文章主要為大家詳細介紹了Bootstrap php制作動態(tài)分頁標簽的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • IE6,IE7下js動態(tài)加載圖片不顯示錯誤

    IE6,IE7下js動態(tài)加載圖片不顯示錯誤

    ie6,7下js動態(tài)加載圖片不顯示錯誤,碰到這類問題的朋友可以參考下。
    2010-07-07

最新評論

淮安市| 西乡县| 屯留县| 孝感市| 鸡西市| 澄城县| 襄樊市| 二手房| 博爱县| 武义县| 昭苏县| 黄冈市| 东乌| 舞钢市| 隆林| 富源县| 固原市| 谷城县| 靖西县| 元江| 家居| 平湖市| 东台市| 东阳市| 枞阳县| 张家口市| 屏东县| 久治县| 梁河县| 玉林市| 峨眉山市| 鲁山县| 巴林右旗| 崇礼县| 巴南区| 连江县| 洛南县| 慈利县| 仁寿县| 科技| 光山县|