Jas*_*ams 6 c# vb.net acrobat file internet-explorer-8
我们有一个托管WebBrowser控件的表单.这是表单上唯一的控件.
我们将表单传递给临时PDF文件的文件路径,它确实:
WebBrowser1.Navigate(Me._PathToPdf)
Run Code Online (Sandbox Code Playgroud)
当表单关闭时,它将导航离开PDF文件:
WebBrowser1.Hide()
WebBrowser1.Navigate("about:blank")
Do Until WebBrowser1.ReadyState = WebBrowserReadyState.Complete
Application.DoEvents()
System.Threading.Thread.Sleep(50)
Loop
Run Code Online (Sandbox Code Playgroud)
表单关闭后,调用类将删除临时PDF文件.
这个过程很有效......直到我们安装了Internet Explorer 8.出于某种原因,IE8和Adobe Acrobat 8(或9)的组合会在临时PDF文件上放置一个额外的文件锁定句柄.在整个应用程序关闭之前,额外的锁定句柄不会消失.我还要提一下,在Acrobat打开文件之前,文件上没有锁.
我们可以在多台机器上重现这一点,它始终是IE8和Adobe Acrobat Reader的结合.我们可以安装福昕阅读器3而不是Adobe Acrobat,一切正常.同样,我们可以在使用IE7和Adobe Acrobat的机器上运行应用程序,并且工作正常.但是,当你混合使用IE 8的魔法药水和Acrobat时,你最终会弄得一团糟.
任何人都可以告诉我为什么我得到一个额外的文件锁,一直持续到应用程序结束?
谢谢.
可以在此处找到演示我的问题的示例应用程序:PDFLockProblemDemo.zip
在我看来,真正的问题是使用控件WebBrowser来托管 Adobe Reader Web 浏览器插件来显示 PDF。是否有更好的方法直接显示 PDF,而不引入对 Web 浏览器的依赖?Adobe 没有提供可直接托管在表单内的 SDK 或 ActiveX 控件吗?
更新:我环顾四周,发现这篇文章,他们访问 Adobe ActiveX 控件 ( AxAcroPDFLib.AxAcroPDF) 并简单地调用:
axAcroPDF1.LoadFile("mypdf.pdf");
axAcroPDF1.Show();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2693 次 |
| 最近记录: |