Parcourir la source

优化查询方法

yangdr il y a 1 mois
Parent
commit
4383bb2015
1 fichiers modifiés avec 105 ajouts et 97 suppressions
  1. 105 97
      src/views/KnowledgeGraphRetrievalTool/Entry.vue

+ 105 - 97
src/views/KnowledgeGraphRetrievalTool/Entry.vue

@@ -196,115 +196,123 @@ export default {
       }
     },
     viewPdf(pdfUrl, page, reference) {
+      let timer
+
+      const iframeLoadEvent = async () => {
+        const iframe = document.getElementById('pdf2js');
+        const viewerApp = iframe.contentWindow.PDFViewerApplication;
+        // console.log("PDFViewerApplication", viewerApp, viewerApp.eventBus)
+        await viewerApp.initializedPromise //等待pdf查看器初始化完成
+        // 监听 PDF 加载完成事件
+        // viewerApp.page = this.pdfPage1  // 传入需要让跳转页码的值
+        viewerApp.eventBus.on('documentloaded', () => {
+          viewerApp.page = this.pdfPage  // 传入需要让跳转页码的值
+          iframe.contentWindow.postMessage("", '*') //传递要匹配的字符串
+          iframe.contentWindow.addEventListener('message', (e) => { //搜索高亮
+            viewerApp.findBar.findField.value = e.data
+            viewerApp.findBar.highlightAll.checked = true
+            viewerApp.findBar.dispatchEvent('highlightallchange')
+          }, false)
+          // console.log("pagesCount", viewerApp.pagesCount) //获取pdf总页数
+          // console.log('文档加载完毕!')
+
+          timer = setInterval(() => {
+            viewerApp.page = this.pdfPage
+            const iframeDocument = document.getElementById('pdf2js').contentWindow.document;
+            const pdfData = {
+              htmlElements: [],
+              textList: [],
+              trunkId: this.pdfDialogData.reference.id
+            }
+            $(iframeDocument).find(`.pdfViewer .page[data-page-number="${this.pdfPage}"] .textLayer  span[role="presentation"]`).each((index, element) => {
+              // console.log(index, $(element).text())
+              pdfData.htmlElements.push(element)
+              pdfData.textList.push($(element).text())
+              // $(element).addClass("highlight")
+            })
+            if (pdfData.htmlElements.length === 0) {
+              console.log("1没有获取到文本!")
+            } else {
+              clearInterval(timer)
+              this.matchHighlight(pdfData)
+            }
+          }, 500)
+        });
+        // viewerApp.eventBus.on('pagesloaded', () => {
+        //   alert('pagesloaded')
+        //   viewerApp.page = this.pdfPage
+        //   let timer = null
+        //   timer = setInterval(() => {
+        //     viewerApp.page = this.pdfPage
+        //     const iframeDocument = document.getElementById('pdf2js').contentWindow.document;
+        //     const pdfData = {
+        //       htmlElements: [],
+        //       textList: [],
+        //       trunkId: reference.id
+        //     }
+        //     $(iframeDocument).find(`.pdfViewer .page[data-page-number="${page}"] .textLayer  span[role="presentation"]`).each((index, element) => {
+        //       // console.log(index, $(element).text())
+        //       pdfData.htmlElements.push(element)
+        //       pdfData.textList.push($(element).text())
+        //       // $(element).addClass("highlight")
+        //     })
+        //     if (pdfData.htmlElements.length === 0) {
+        //     } else {
+        //       clearInterval(timer)
+        //       this.matchHighlight(pdfData)
+        //     }
+        //   }, 200)
+        //   // console.log('PDF 页面渲染完成');
+        // });
+      }
+      if (!this.pdfUrl) {
+        document.getElementById('pdf2js').addEventListener('load', iframeLoadEvent);
+      }
+
       const isPdfUrlChange = this.pdfUrl !== pdfUrl;
       this.pdfUrl = pdfUrl
       this.pdfDialogData.visible = false
       this.pdfShow = true;
       this.pdfPage = page || 1
-      let timer
-      // alert(page)
+
       this.$nextTick(() => {
         // 获取 iframe 元素
+        // console.log("我是nextTick")
         const iframe = document.getElementById('pdf2js');
         if (isPdfUrlChange) { //pdf文件链接有改变,需要等待文件加载完毕
-          iframe.addEventListener('load', async () => {
-            const viewerApp = iframe.contentWindow.PDFViewerApplication;
-            // console.log("PDFViewerApplication", viewerApp, viewerApp.eventBus)
-            await viewerApp.initializedPromise //等待pdf查看器初始化完成
-            // 监听 PDF 加载完成事件
-            // viewerApp.page = this.pdfPage1  // 传入需要让跳转页码的值
-            viewerApp.eventBus.on('documentloaded', () => {
-              viewerApp.page = this.pdfPage  // 传入需要让跳转页码的值
-              iframe.contentWindow.postMessage("", '*') //传递要匹配的字符串
-              iframe.contentWindow.addEventListener('message', (e) => { //搜索高亮
-                viewerApp.findBar.findField.value = e.data
-                viewerApp.findBar.highlightAll.checked = true
-                viewerApp.findBar.dispatchEvent('highlightallchange')
-              }, false)
-              // console.log("pagesCount", viewerApp.pagesCount) //获取pdf总页数
-              // console.log('文档加载完毕!')
-
-              timer = setInterval(() => {
-                viewerApp.page = this.pdfPage
-                const iframeDocument = document.getElementById('pdf2js').contentWindow.document;
-                const pdfData = {
-                  htmlElements: [],
-                  textList: [],
-                  trunkId: reference.id
-                }
-                $(iframeDocument).find(`.pdfViewer .page[data-page-number="${this.pdfPage}"] .textLayer  span[role="presentation"]`).each((index, element) => {
-                  // console.log(index, $(element).text())
-                  pdfData.htmlElements.push(element)
-                  pdfData.textList.push($(element).text())
-                  // $(element).addClass("highlight")
-                })
-                if (pdfData.htmlElements.length === 0) {
-                  console.log("1没有获取到文本!")
-                } else {
-                  clearInterval(timer)
-                  this.matchHighlight(pdfData)
-                }
-              }, 500)
-            });
-            // viewerApp.eventBus.on('pagesloaded', () => {
-            //   alert('pagesloaded')
-            //   viewerApp.page = this.pdfPage
-            //   let timer = null
-            //   timer = setInterval(() => {
-            //     viewerApp.page = this.pdfPage
-            //     const iframeDocument = document.getElementById('pdf2js').contentWindow.document;
-            //     const pdfData = {
-            //       htmlElements: [],
-            //       textList: [],
-            //       trunkId: reference.id
-            //     }
-            //     $(iframeDocument).find(`.pdfViewer .page[data-page-number="${page}"] .textLayer  span[role="presentation"]`).each((index, element) => {
-            //       // console.log(index, $(element).text())
-            //       pdfData.htmlElements.push(element)
-            //       pdfData.textList.push($(element).text())
-            //       // $(element).addClass("highlight")
-            //     })
-            //     if (pdfData.htmlElements.length === 0) {
-            //     } else {
-            //       clearInterval(timer)
-            //       this.matchHighlight(pdfData)
-            //     }
-            //   }, 200)
-            //   // console.log('PDF 页面渲染完成');
-            // });
-
-          });
+          // iframe.removeEventListener('load', iframeLoadEvent);
+          // iframe.addEventListener('load', iframeLoadEvent);
         } else {
           const viewerApp = iframe.contentWindow.PDFViewerApplication;
           viewerApp.page = this.pdfPage  // 传入需要让跳转页码的值
-          iframe.contentWindow.postMessage("", '*') //传递要匹配的字符串
-          iframe.contentWindow.addEventListener('message', (e) => { //搜索高亮
-            viewerApp.findBar.findField.value = e.data
-            viewerApp.findBar.highlightAll.checked = true
-            viewerApp.findBar.dispatchEvent('highlightallchange')
-
-            timer = setInterval(() => {
-              const iframeDocument = document.getElementById('pdf2js').contentWindow.document;
-              const pdfData = {
-                htmlElements: [],
-                textList: [],
-                trunkId: reference.id
-              }
-              $(iframeDocument).find(`.pdfViewer .page[data-page-number="${page}"] .textLayer  span[role="presentation"]`).each((index, element) => {
-                // console.log(index, $(element).text())
-                pdfData.htmlElements.push(element)
-                pdfData.textList.push($(element).text())
-                // $(element).addClass("highlight")
-              })
-              if (pdfData.htmlElements.length === 0) {
-                console.log("2没有获取到文本!")
-              } else {
-                clearInterval(timer)
-                this.matchHighlight(pdfData)
-              }
-
-            }, 200)
-          }, false)
+          // iframe.contentWindow.postMessage("", '*') //传递要匹配的字符串
+          // iframe.contentWindow.addEventListener('message', (e) => { //搜索高亮
+          //   viewerApp.findBar.findField.value = e.data
+          //   viewerApp.findBar.highlightAll.checked = true
+          //   viewerApp.findBar.dispatchEvent('highlightallchange')
+          // }, false)
+
+          timer = setInterval(() => {
+            viewerApp.page = this.pdfPage  // 传入需要让跳转页码的值
+            const iframeDocument = document.getElementById('pdf2js').contentWindow.document;
+            const pdfData = {
+              htmlElements: [],
+              textList: [],
+              trunkId: this.pdfDialogData.reference.id
+            }
+            $(iframeDocument).find(`.pdfViewer .page[data-page-number="${page}"] .textLayer  span[role="presentation"]`).each((index, element) => {
+              // console.log(index, $(element).text())
+              pdfData.htmlElements.push(element)
+              pdfData.textList.push($(element).text())
+              // $(element).addClass("highlight")
+            })
+            if (pdfData.htmlElements.length === 0) {
+              console.log("2没有获取到文本!")
+            } else {
+              clearInterval(timer)
+              this.matchHighlight(pdfData)
+            }
+          }, 200)
         }
       })
     },