我为这个问题的长度道歉,但需要一些背景解释。
背景
我正在开发一个内部网络应用程序,它将在iframe中显示pdf。 Adobe Reader X提供了一种“读取模式”,用于在浏览器中显示pdf。这将删除shell,并在鼠标位于“中间中心”上方时将菜单框添加到pdf的底部。在X之前的版本中,您可以使用JavaScript来修改工具栏菜单项。
我需要的是什么:
我需要在“阅读模式”中显示pdf并删除所有菜单项。要运行此应用程序的计算机基本上是一个自助服务终端,实际上是计算机,显示器和鼠标。没有打印机,没有键盘,没有其他交互性。
我的问题是: 如何加载pdf以便在Internet Explorer中读取,并禁用除滚动之外的所有交互。也就是说,当底部中心被鼠标悬停时,没有菜单,没有上下文菜单,也没有“阴影条”。我一直在寻找Adobe的替代品,有一些很棒的,但我发现有一个浏览器插件,没有IE的插件。
如果有人知道加载PDF内容的方法,那将是更好的路线。
更多信息:
如果有帮助,虽然这是为Internet Explorer构建的,但网页将被加载到一个只有全屏浏览器控件的Windows窗体中。
我尝试过的其他事情:
我还尝试在pdf iFrame顶部放置一个透明的iFrame,仅覆盖显示的内容,但保留滚动条完好无损。如果我加载任何东西但是pdf,这就完美了。如果我加载任何其他网站然后它按预期工作(除了滚轮当然不滚动网页)。如果加载了pdf,那么所有出现的都是白色方块。使用开发工具栏删除透明的iFrame,PDF看起来很好。
答案 0 :(得分:4)
我找到了一个很好的部分解决方案。一种名为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中并删除工具栏,状态栏,消息,navpanes,但仍允许滚动条。这可以防止出现阴影框菜单,这很棒!
用户仍然可以右键单击pdf,这样我就可以尝试使用JavaScript中的标准右键单击阻止程序,并编辑是否可以使用。
修改强>
可以找到一个很好的URL参数资源here。
答案 1 :(得分:1)
好的,所以我想出了最终解决方案。
需要:强>
通过一些警告来解决第一个需求很容易。将iFrame的源设置为“pathToPdf / document.pdf#toolbar = 0& navpanes = 0”。这里需要注意的是(至少在IE中),一旦打破,浏览器需要关闭并重新打开才能再次运行。那么,有什么能打破它?
网页被加载到Windows窗体的浏览器控件中,幸运的是,一旦打破它就可以正常工作而无需关闭和重新打开。对于正在查看的PDF,仍然可能是一个问题。我不必担心转义键,因为应用程序在KIOSK上运行(基本上)并且没有键盘,只有鼠标。
禁用上下文菜单已被证明是最困难的事情。 Web浏览器控件具有“IsWebBrowserContextMenuEnabled”属性,当设置为“False”时,将禁用浏览器的上下文菜单。可能因为adobe reader是一个插件,这不会影响PDF。使用Reader X,没有注册表设置(我可以找到)或JavaScript方法,或一般设置将禁用上下文菜单。
当我想起某件事时,我已经准备好放弃了。这是一个自助服务终端,不需要鼠标右键。所以解决方案;修改注册表并关闭内部操作系统的右键单击。要做到这一点,只需打开注册表并转到:
<强>要点:强>
修改强>
注册表黑客只在Windows资源管理器中禁用鼠标右键。我们没有找到一个好的软件解决方案,所以我们要么编写自己的自定义鼠标驱动程序,要么只是弹出鼠标并删除物理触发机制。