javascript - PDF.JS - 检测页面何时呈现

标签 javascript jquery html dom pdf.js

一旦 PDF.JS 完成渲染每个页面,我想然后对该页面的内容进行查找/替换。

我通过将以下内容放入 iFrame 的文档中来调用 PDF.JS:

<script>
fileId=0;
function getURLParameter(name) {
  return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20'))||null
}
var fileId = getURLParameter("fileId");
var DEFAULT_URL = '/viewer/fetchpdf.php?fileId='+fileId;
</script>

然后从父框架设置 URL:

url = '/_third_party/pdfjs/web/viewer.html?fileId='+$(this).attr('href');
$("#iframeViewPdf").attr('src', url);

我注意到在使用 PDF.JS 呈现 PDF 时,它会使用加载占位符初始化每个页面:

<div id="pageContainer3" class="page" style="width: 991px; height: 1319px;">
    <div class="loadingIcon"></div>
</div>
<div id="pageContainer4...

然后它将 PDF 呈现为 html,例如

<div id="pageContainer3" class="page" style="width: 991px; height: 1319px;">
    <div class="canvasWrapper" style="width: 991px; height: 1319px;">
        <canvas id="page46" width="991" height="1319" style="width: 991px; height: 1319px;">
        </canvas>
    </div>
    <div class="textLayer" style="width: 991px; height: 1319px;">
        ...
    </div>
</div>
<div id="pageContainer4...

最佳答案

随着澄清,这是一个非常不同的故事。您不是直接使用 PDF.JS,而是使用它们的 Web 包装器。我认为你可以使用的一件事(我从来没有做过,只是现在阅读代码)是他们在 document 上发出 pageRendered 事件,所以如果你可以给它添加一个监听器,你应该没问题:

var frameDoc = document.getElementById('iframeViewPdf').contentWindow.document;

frameDoc.addEventListener('pagerendered', function (evt) {
  console.log(evt); // see what goodies hide here! like page number etc
}

(未测试,可能需要调整。)

关于javascript - PDF.JS - 检测页面何时呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29663408/

相关文章:

javascript - 可变对象键 (`${}` )

javascript - 通过在 folktale2 中使用函数式编程 javascript,如何优雅地访问先前任务的结果?

php - 单击提交按钮后按 f5

html - 组合 CSS 媒体查询条件

jquery - IOS/Android - 动画网站的最佳方法

php - 如何将图像 url 从数据库加载到 Bootstrap 缩略图

javascript - 如何根据条件改变背景颜色

javascript - 使用 JavaScript 从每个元素中删除隐藏类

javascript - JQuery - ScrollTop 在 Chrome 扩展中不起作用

jquery - 我正在尝试向表添加删除按钮,并且仅删除 jquery 中的该表行。