【问题标题】:How can I support in-browser display of a PDF file in Internet Explorer 64-bit如何在 Internet Explorer 64 位中支持 PDF 文件的浏览器内显示
【发布时间】:2023-03-09 03:53:01
【问题描述】:

在使用 64 位版本的 Internet Explorer 时,Adobe 似乎不支持在浏览器中显示 PDF。单击 pdf 链接后,64 位 Internet Explorer 将始终跨越一个新的 Adob​​e 窗口来显示 pdf。 32 位 Internet Explorer 将显示嵌入在浏览器本身中的 pdf。

我在 64 位编译的 WinForms .NET 应用程序中使用 WebBrowser 控件时注意到了这个问题。我不相信在 64 位应用程序中使用 32 位 WebBrowser 控件是可能的,所以我正在寻找一些解决这个问题的方法,即使它需要使用第三方插件。

任何建议将不胜感激。

谢谢。

【问题讨论】:

  • 刚刚在SO中找到了这条信息。 “Internet Explorer 64 位只能运行 64 位插件。Adobe PDF 插件是 32 位的,不能在 64 位 IE 中运行”。那么,我真正在这里寻找的是一些有创意的替代品吗?
  • 你能使用不同的浏览器引擎吗? WebKit 可以很好地处理 PDF afaik
  • 感谢您的建议,不幸的是,不能选择使用不同的浏览器引擎:-(
  • 只需将项目的平台目标设置为 x86。
  • 我需要将平台目标保持为 64 位。

标签: c# winforms internet-explorer adobe browser


【解决方案1】:

如果您的平台目标需要是 x64,并且您需要使用与 x64 不兼容的功能,那么显然您遇到了问题。您将不得不在一侧或另一侧妥协。

或者,您可以考虑为 PDF 查看器打开一个单独的进程,并将新生成的进程窗口的父窗口设置为您的容器控件。这将具有在您的控件中“嵌入”窗口的效果。然后,您可以强制删除边框并将其最大化。 Windows API,救援!如果您决定走这条路线,请查看Sumatra PDF,您可以轻松分发。

【讨论】:

  • 嗨@Zenexer,有没有可以链接到的文章?鉴于我缺乏使用 Win API 的经验和潜在的陷阱(如下),我更倾向于在专家指导下进行尝试。根据 Hans Passant 在这篇文章中的 cmets:link 听起来这可能不是一个实际的解决方案。在我的情况下,我需要嵌入 adobe acrobat(这是一个没有解决方案的常见讨论主题。)完成进程外解决方案的管道听起来并不乐观。
  • @dyslexicanaboko 在单独的进程中运行它是非常不切实际的。但是,由于您不能让进程同时运行 32 位和 64 位代码,因此在 Adob​​e 更新一点之前,这是您唯一的选择。这也是我在类似情况下成功完成的一项技术,所以绝对有可能。最好的部分是,您可以完全放弃网络浏览器控制。您还要处理整个应用程序,而不是 ActiveX 控件,这实际上使这项技术更容易。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
  • 2017-03-07
  • 2011-09-28
  • 2019-09-08
  • 1970-01-01
相关资源
最近更新 更多