PDF.js – 在嵌入式PDF上使用搜索function
我使用带有iframe src=viewer.html?file=...
标签的PDF.js嵌入了PDF。 我正在使用PDF.js及其viewer.html,因为它已经提供了我在其他任何示例中都找不到的搜索function。
我希望用户能够点击
HTML
6.5 Calling External Functions
JavaScript的
$('td').unbind('click').click(function () { alert("Find text in PDF!"); });
我在SO上发现了类似的问题,但他们无法真正回答我的问题:
- https://stackoverflow.com/questions/24439701/searching-embedded-pdfs-in-iframes
- https://stackoverflow.com/questions/28322082/sencha-search-text-in-pdf-file-rendered-from-plugin-pdf-js
- 访问PDF.js查看器function/事件
谢谢!
受dev-random的回答启发,我将以下代码添加到viewer.js。 我通过传递url参数打开我的pdf,例如http:// localhost:3000 / pdf / viewer.html?&search = your_search_term 。 这样,当您打开PDF文件时,将自动执行适合我的用例的搜索。
//Add this piece of code to webViewerInitialized function in viewer.js if ('search' in params) { searchPDF(params['search']); } //New function in viewer.js function searchPDF(td_text) { PDFViewerApplication.findBar.open(); PDFViewerApplication.findBar.findField.value = td_text; PDFViewerApplication.findBar.caseSensitive.checked = true; PDFViewerApplication.findBar.highlightAll.checked = true; PDFViewerApplication.findBar.findNextButton.click(); PDFViewerApplication.findBar.close(); }
由于没有其他人回答我的问题,我将自己回答。 我终于使用viewer.html @ https://github.com/mozilla/pdf.js/tree/master/web了解它 。
这是我编写的一些示例代码,以使其工作。 希望将来可以帮助别人。
PDFView.open(pdf_url, 0); // search with PDF.js function searchPDF(td_text) { PDFView.findBar.open(); $(PDFView.findBar.findField).val(td_text); $("#tableDiv").focus(); var event = document.createEvent('CustomEvent'); event.initCustomEvent('find', true, true, { query: td_text, caseSensitive: $("#findMatchCase").prop('checked'), highlightAll: $("#findHighlightAll").prop('checked'), findPrevious: undefined }); return event; }
我试图实现@ webstruck的方法,但无法解决“PDFView未定义”错误。 我最终像这样解决:
//Add this piece of code to webViewerInitialized function in viewer.js if ('search' in params) { searchPDF(params['search']); }
然后改变了他的做法:
//New function in viewer.js function searchPDF(p_search_text) { var l_params = { query: p_search_text, phraseSearch: p_search_text }; webViewerFindFromUrlHash(l_params); }
在HTML中iframe我添加了&search = term并且得到如下:
工作就像一个魅力,突出显示所有单词!