如何使用 pdf.js 进行搜索
How to search with pdf.js?
我正在我的 Ionic App 中显示一个带有 pdf.js 的 pdf 文件。我不使用查看器.js和查看器.html,因为我需要一个完全不同的布局。现在我有一个自定义搜索栏,我想在我的 pdf 文件中突出显示术语。是否有我可以调用的函数来执行此操作?
我像这样渲染文件:
$scope.renderPages = function(pdfDoc) {
$scope.pdfFile = pdfDoc;
for(var num = 1; num <= pdfDoc.numPages; num++){
pdfDoc.getPage(num).then($scope.renderPage);
}
}
$scope.renderPage = function(page) {
var viewport = page.getViewport(1);
scale = document.getElementById('viewer').clientWidth / viewport.width;
viewport = page.getViewport(scale);
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
var renderContext = {
canvasContext: ctx,
viewport: viewport
};
canvas.height = viewport.height;
canvas.width = viewport.width;
var canvasContainer = document.getElementById('viewer');
canvasContainer.appendChild(canvas);
page.render(renderContext);
}
.HTML:
<div id="viewerContainer" style="padding-bottom: 100%; padding-top: 20px;">
<div id="viewer" class="viewer-styles">
</div>
</div>
现在我找到了解决方案!
var container = document.getElementById('viewerContainer');
var viewer = document.getElementById('viewer');
var pdfViewer = new PDFViewer({
container: container,
viewer: viewer
});
$scope.pdfFindController = new PDFFindController({
pdfViewer: pdfViewer
);
pdfViewer.setFindController($scope.pdfFindController);
container.addEventListener('pagesinit', function () {
pdfViewer.currentScaleValue = 'page-width';
});
PDFJS.getDocument(MY_PATH_TO_THE_PDF).then(function (pdfDocument) {
pdfViewer.setDocument(pdfDocument);
});
搜索术语:
$scope.pdfFindController.executeCommand('find', {
caseSensitive: false,
findPrevious: undefined,
highlightAll: true,
phraseSearch: true,
query: "myQuery"
});
我不得不导入查看器.js。
不再需要我在问题中发布的代码。PDFViewer 呈现 pdf。
这是一个古老的线程,但我认为人们现在应该知道该软件包的工作原理。我设法使它按以下方式工作。我正在使用iframe来显示pdf。
const iframeDocument = document.getElementById('pdf-js-viewer').contentWindow;
let searchText = "TheTextYouWantoToHighlight";
iframeDocument.PDFViewerApplication.pdfViewer.findController.executeCommand('find', {
caseSensitive: false,
findPrevious: undefined,
highlightAll: true,
phraseSearch: true,
query: searchText
})
使用最新版本的pdfjs,这可以工作,但在控制台中使用调度事件时出错。此代码将删除该错误并按预期工作。
const iframeDocument = document.getElementById('pdf-js-viewer').contentWindow;
let searchText = "TheTextYouWantoToHighlight";
iframeDocument.PDFViewerApplication.eventBus.dispatch('find', {
caseSensitive: false,
findPrevious: undefined,
highlightAll: true,
phraseSearch: true,
query: searchText
});
相关文章:
- JS的搜索功能
- 如何设置“;search_type”;在弹性搜索js
- 在Knockout JS中搜索从DB加载数据的项目
- 如何在单击按钮时使用instantsearch.js启动搜索
- 如何从Chosen JS中删除搜索框
- 通过JS/AAJAX在XML文件中搜索1个数据
- Angular JS根据搜索结果和点击事件更新DOM元素
- JS在input标签上使用keyup事件进行搜索
- 在Sinatra(ruby)中实现JS模糊搜索
- 更改阿尔戈利亚即时搜索.js统计模板
- ldap.js :嵌套搜索
- 当我用ctrl+p搜索时,为什么要在谷歌chrome上使用inspect来调试缺少显示文件js
- 在js中的表中搜索不起作用
- 使用JS和Keyup在Rails4中进行实时搜索
- 搜索JS文件您're表示字符串
- 弹性搜索 JS 函数返回值
- Youtube搜索js功能
- 搜索js图像裁剪插件,无需jquery
- 搜索JS对象的值
- 从数组索引搜索 JS 创建的未定义变量