【问题标题】:Internet Explorer PDF ReaderInternet Explorer PDF 阅读器
【发布时间】:2012-01-13 08:16:36
【问题描述】:

对于这个问题的长度,我深表歉意,但需要一些背景说明。

背景:

我正在开发一个将在 iframe 中显示 pdf 的内部 Web 应用程序。 Adobe Reader X 提供了一种“阅读模式”,用于在浏览器中显示 pdf。当鼠标悬停在“中间中心”上时,这将删除外壳并在 pdf 的底部添加一个菜单框。在 X 之前的版本中,您可以使用 JavaScript 修改工具栏菜单项。

我需要什么:

我需要在“阅读模式”中显示 pdf 并删除所有菜单项。运行这个应用程序的计算机基本上是一个信息亭,实际上是一台计算机、显示器和鼠标。没有打印机,没有键盘,没有其他交互性。

我的问题是: 如何加载 pdf 以在 Internet Explorer 中阅读,并禁用除滚动之外的所有交互。也就是说,当鼠标悬停在底部中心时,没有菜单,没有上下文菜单,也没有“阴影栏”。我一直在寻找 Adob​​e 的替代品,其中有一些很棒的替代品,但我发现有浏览器插件的那些没有 IE 插件。

如果有人知道一种仅加载 PDF 内容的方法,那将是更好的方法。

更多信息:

如果有帮助,当这是为 Internet Explorer 构建时,网页将被加载到一个窗口窗体中,该窗体只是一个全屏浏览器控件。

我尝试过的其他方法:

我还尝试在 pdf iFrame 顶部放置一个透明 iFrame,仅覆盖显示的内容,但保持滚动条完好无损。如果我加载了除 pdf 之外的任何内容,这将非常有效。如果我加载了任何其他网站,那么它会按预期工作(当然滚轮不会滚动网页)。如果加载了 pdf,那么出现的只是一个白色方块。使用开发工具栏删除透明 iFrame,PDF 看起来不错。

【问题讨论】:

  • 我添加了 C#、JavaScript 和 Html 标记,因为可能有使用这些方法中的任何一种或所有方法的解决方案。

标签: c# javascript html internet-explorer pdf


【解决方案1】:

我找到了一个很好的部分解决方案。一个名为PDFObject的产品。

使用它,我可以将以下 JavaScript 添加到我的页面:

function embedPDF() {
        var myPDF = new PDFObject({
            url: 'PathToPdf.pdf',
            pdfOpenParams: { 
                scrollbars: '1',
                toolbar: '0',
                statusbar: '0',
                messages: '0', 
                navpanes: '0' 
            }
        }).embed('DivToLoadPdfInto');
    }

    window.onload = embedPDF;

这会将 pdf 嵌入 div 并删除工具栏、状态栏、消息、导航窗格,但仍允许滚动条。这样可以防止出现阴影框菜单,太棒了!

用户仍然可以右键单击 pdf,因此我将尝试 JavaScript 中的标准右键单击阻止程序,并在我可以得到一些工作时进行编辑。

编辑:

可以在here找到一个很好的URL参数资源。

【讨论】:

  • PDFObject 的网站也是确定 Adob​​e Reader 功能的绝佳资源。 Javascript 文件甚至不是必需的,您可以使用他们的指南来创建您需要的嵌入代码。
  • 我正在考虑这样做,使用 PDFObject 站点作为资源。我发现的一个问题是它并没有消除阴影框,而是将它从窗口的底部移动到了顶部......
  • 是的,我认为您无法避免这种情况。 Adobe Reader 的选项有限。
【解决方案2】:

好的,所以我想出了一个最终的解决方案。

需求:

  1. 在 iFrame 中以“阅读器模式”加载 PDF,但没有阴影栏
  2. 应禁用 PDF 上下文菜单

解决第一个需求很容易,但有一些注意事项。将 iFrame 的源设置为“pathToPdf/document.pdf#toolbar=0&navpanes=0”。这里需要注意的是(至少在 IE 中)一旦中断,则需要关闭并重新打开浏览器才能再次工作。那么,有什么能打破它呢?

  • 用户右键单击并打开导航窗格按钮。
  • 用户按下键盘上的退出按钮。

该网页被加载到 Windows 窗体的浏览器控件中,幸运的是,一旦在那里被破坏,它就可以正常工作,而无需关闭和重新打开。但是对于正在查看的 PDF 来说仍然可能是一个问题。我不必担心转义键,因为该应用程序(基本上)在 KIOSK 上运行,并且没有键盘,只有鼠标。

事实证明,禁用上下文菜单是最困难的事情。 Web 浏览器控件具有“IsWebBrowserContextMenuEnabled”属性,当设置为“False”时,将禁用浏览器的上下文菜单。可能是因为 adobe reader 是一个插件,所以这不会影响 PDF。使用 Reader X,没有注册表设置(我可以找到)或 JavaScript 方法,或禁用上下文菜单的常规设置。

当我想起某事时,我已经准备好放弃了。这是一个信息亭,不需要鼠标右键。所以解决方案;修改注册表并关闭内部操作系统的右键。为此,只需打开 regedit 并转到:

  • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
  • 查找(如果不存在则创建)名为“NoViewContextMenu”的 DWORD 键。
  • 值为 1 将禁用右键单击,0 将启用。

总结:

  1. 使用“pathToPdf/document.pdf#toolbar=0&navpanes=0”
  2. 在 Windows 注册表中禁用右键单击

编辑:

注册表黑客只会禁用 Windows 资源管理器中的鼠标右键。我们没有找到好的软件解决方案,所以我们要么编写自己的自定义鼠标驱动程序,要么简单地打开鼠标并移除物理触发机制。

【讨论】:

  • 在测试中我发现注册表黑客只会禁用 Windows 资源管理器的右键单击。它不会在系统范围内禁用鼠标右键...当我有更好的解决方案时,我会再次更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-29
  • 2011-11-01
  • 1970-01-01
  • 2012-10-31
  • 2013-11-24
相关资源
最近更新 更多