【问题标题】:Pdfjs viewer with external file upload带有外部文件上传的 Pdfjs 查看器
【发布时间】:2017-02-09 18:57:39
【问题描述】:

我正在使用 pdf.js API 方法(例如运行和打开)在我的网页中的 div 中加载 pdf.js 查看器。

在这个页面中,我还有一个文件上传部分来附加相关文件。

问题是当我使用 dropzone 在文件上传部分上传文档时,pdf 查看器认为我正在向其上传文档并更改现有文档。有设置关闭这个吗?我认为 network.js 中会有一些东西,但我还没有发现任何有希望的东西。

【问题讨论】:

  • 您是在使用项目viewer 示例的自定义版本,还是直接使用PDFJS.getDocument 和手动渲染到this 等画布元素上的显示层API?还是第三方包装器?
  • 我直接使用 API。我给 PDFViewerApplication 我的配置,它告诉它布局元素,然后我用我的 URL 调用 open。

标签: html ajax pdf dropzone.js pdf.js


【解决方案1】:

Here is the offending part in PDFViewerApplication,它添加了一个全局的change 事件监听器,如果它是一个文件输入并选择了文件,它会更改 pdf。

不幸的是,没有设置标志来禁用此行为,没有引用侦听器函数来删除它,也没有办法取消或更改事件(它也会破坏应用程序的其他部分),所以你会必须修改此代码才能将其删除。似乎侦听器只是调度了一个新的内部 fileinputchange 事件,该事件仅用于此目的,因此您只需注释掉 this line

【讨论】:

  • 做到了!我已经挖了两天了,从来没有看到过。太感谢了!只是好奇,您知道如何在不使用 iFrame 的情况下在同一页面中拥有多个 pdfjs 查看器吗?
  • 我有一个单页应用程序和一个位于两个不同部分的查看器,但我还没有找到清理它们的好方法。我曾尝试删除他们的 dom,但没有任何成功,并且在 app.js 文件中找不到销毁方法
  • 是的,我早些时候看到了你的问题。 Tbh 这个查看器实际上只是一个演示/示例实现,并且查看代码它非常不适合这种包含的存在,它是一个直接挂钩到窗口中所有内容的单个实例对象。你可以放弃它,只使用带有 PDJS.getDocument 的显示层,像示例中那样将页面渲染到画布上,并添加一些你真正需要的 UI 功能(如缩放、跳转到页面),它可以在几百个内完成代码行。
  • 我通过在离开页面时删除 dom、删除覆盖模型并使查看器配置按类而不是 id 查找内容来实现此功能。感谢您的所有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-09
  • 1970-01-01
  • 2016-09-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-23
相关资源
最近更新 更多