【问题标题】:Fragment (anchor #) in .NET 4 WebBrowser Control getting lost with Adobe PDF Reader and file://.NET 4 WebBrowser 控件中的片段(锚点#)在 Adob​​e PDF Reader 和 file:// 中丢失
【发布时间】:2011-06-29 08:21:52
【问题描述】:

我创建一个带有片段(又名锚点#)的 URI。

UriBuilder ub = new UriBuilder("file://path/doc.pdf");
ub.Fragment = "chapterX";

url 在调试器中正确显示 (ub -> file://path/doc.pdf#chapterX)。但是当我将它分配给 WebBrowser 控件时,片段部分会丢失(片段的原因请参阅PDF Open parameter)。

this._myWebBrowser.Url = ub.Uri;
// Alternative this._myWebBrowser.Navigate("file://path/doc.pdf#chapterX");

当我检查this._myWebBrowser.Url 时,它显示file://path/doc.pdfthis._myWebBrowser.Url.Fragment 为空 - 也是只读的,无法分配。

正如 C.Haas 在下面显示的那样,这个概念通常是有效的,由于某些原因,当资源是 LOCAL(!) pdf 文件时它会失败。

总结:

  1. 在协议为 http 时有效
  2. 资源为 .htm / .html 时有效 - 即使协议为 file://
  3. 适用于文件为 .pdf 且协议为 http(与 1 相同)的情况。
  4. 如果引用本地 pdf 文件失败,片段会丢失

有什么解决方法吗?


修订:

  1. 20110219 - 感谢 C.Haas 更新。正如 Chris 所示,“.htm”可以,但“.pdf”失败,并且只有当它引用本地资源时。
  2. 20110218 - 感谢 abatishchev 的一些发现:如果我使用 Navigate 它也不起作用,但 Navigate 提供了一个框架名称。在这种情况下,会弹出一个外部 IE(因为控件页面中没有框架),然后正确显示带有片段的 URL。不是我想要的,但它显示 URL 本身是正确的,并且错误似乎在控制范围内。

【问题讨论】:

  • 我删除了 C# 和 Windows 窗体标签,因为导航(以及 URL 解析)是由 adobe 的 ActiveX 文档服务器中的超链接框架实现的。超链接框架提供部分文档显示、下载进度、取消能力等。更多关于webbrowser在ActiveX文档超链接中的作用,请查看msdn.microsoft.com/en-us/library/aa740928(v=VS.85).aspx
  • 感谢您的反馈,但我认为它不正确。恕我直言,它是片段的底层 .net 类(很可能是 UriBuilder)切割。否则我会在 WebBrowser.Url 中看到完整的 URL - 还是我错了?我确实有这样的理论,即底层类提供了一些智能 - 认为资源是本地文件,因此忽略了片段。因为如果我使用不同的协议(不是 file://),片段仍然存在。所以这很可能是一个 .net(当然不是纯 c#)问题,而不是 ActiveX 控件的问题。
  • 你是对的,这不是控件的问题,而是 Uri 类的问题。但由于它看起来是在控制和 Uri 类的组合中发生的,所以我用两者都标记了它。再次感谢您的反馈。
  • DocumentCompleted 中的最终 url 是什么?你得到 DocumentCompleted 了吗?
  • 事件 DocumentCompleted 被调用,WebBrowserDocumentCompletedEventArgs.Url 没有片段(file://path/doc.pdf),而 navigation 被调用如下: Navigate(file://path/doc.pdf #chapterX)。

标签: .net pdf webbrowser-control parameter-passing acrobat


【解决方案1】:

怎么样

wb.Navigate("http://example.com#chapterX");

?

【讨论】:

  • 我试过了,片段又被切断了;-(我猜它在内部创建了一个 Uri 并按上面的方式设置它。无论如何,非常感谢!
  • 我刚刚用Navigate() 试了一下,它工作正常。 VB2010 .Net 4.0
  • 也只是尝试手动设置Url,它也可以工作。
  • 我会交叉检查这个,感谢您的反馈,但是实际上没有太多的错误空间......我的场景是相同的 VS2010 + .net4
  • 你说得对,克里斯,这似乎是 PDF 资源的问题。
猜你喜欢
  • 2011-05-29
  • 2011-04-19
  • 2010-09-30
  • 1970-01-01
  • 2016-12-06
  • 1970-01-01
  • 1970-01-01
  • 2017-10-15
  • 2012-12-07
相关资源
最近更新 更多