我使用带有iframe src=viewer.html?file=...
标记的PDF.js嵌入了PDF。我使用的是PDF.js及其viewer.html,因为它已经提供了我在其他任何例子中都找不到的搜索功能。
我希望用户能够点击<td>
并使用包含的文本搜索PDF并跳转到第一次出现。 JSFiddle:http://jsfiddle.net/agyetcsj/
HTML
<div id="tableDiv"><table border="1" width="400px"><tr><td>6.5 Calling External Functions</td></tr></table></div>
<iframe id="pdfImage" width="600px" height="600px" class="pdf" src="http://mozilla.github.com/pdf.js/web/viewer.html?file=compressed.tracemonkey-pldi-09.pdf"></iframe>
的JavaScript
$('td').unbind('click').click(function () {
alert("Find text in PDF!");
});
我在SO上发现了类似的问题,但他们无法回答我的问题:
谢谢!
答案 0 :(得分:11)
受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();
}
答案 1 :(得分:8)
由于没有其他人回答我的问题,我将自己回答。 我终于通过使用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;
}
答案 2 :(得分:2)
我试图实现@ 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我添加了&amp; search = term并且得到了这样的结果:
<iframe id="htmlPDFViewer" style="width:100%; " frameBorder="0" src="../Scripts/pdfjs/web/viewer.html?file=../pdf/file.pdf&search=searchTerm" ></iframe>
像魅力一样工作,突出显示所有单词!
答案 3 :(得分:0)
在Rafael Araujo的解决方案中添加了几行:
# -*- coding: utf-8 -*-
import scrapy
codes = open('codes.txt').read().split('\n')
class MainSpider(scrapy.Spider):
name = 'main'
form_url = 'https://safer.fmcsa.dot.gov/query.asp'
start_urls = ['https://safer.fmcsa.dot.gov/CompanySnapshot.aspx']
def parse(self, response):
for code in codes:
data = {
'searchtype': 'ANY',
'query_type': 'queryCarrierSnapshot',
'query_param': 'USDOT',
'query_string': code,
}
yield scrapy.FormRequest(url=self.form_url, formdata=data, callback=self.parse_form)
def parse_form(self, response):
cargo = response.xpath('(//table[@summary="Cargo Carried"]/tbody/tr)[2]')
for each in cargo:
each_x = each.xpath('.//td[contains(text(), "X")]/following-sibling::td/font/text()').get()
yield {
"X Values": each_x if each_x else "N/A",
}
现在,PDFjs还将打开搜索项并填充搜索词。这使您可以滚动浏览所有突出显示的发现。