使用vb.net中的webbrowser将PDF保存到文件

时间:2012-10-06 18:51:03

标签: vb.net pdf browser

我有一个动态生成的PDF,我希望下载到硬盘。文件下载由vb.net代码启动:

WebBrowser1.Navigate("javascript:fnSubmitPDFForm('modalDivpdf')")

我目前正在使用“打开保存取消”选项获取正常的Internet Explorer“文件下载”窗口。我想指定一个文件夹和文件名并自动下载PDF。这可能吗?

以下是引发“文件下载”窗口的链接的更好示例。我想自动保存PDF:

WebBrowser1.Navigate("http://www2.hungryhorse.co.uk/index.php/download_file/view/838/71/")

由于

2 个答案:

答案 0 :(得分:0)

您既不能自动下载文件也不能指定路径。但是,您可以提供建议的文件名:

context.Response.ContentType = "application/octet-stream"                                                         
context.Response.AddHeader("content-disposition", "attachment; filename=""" & "yourFilename.pdf & """")
context.Response.TransmitFile(actualFile)

其中yourFilename.pdf是建议的文件名,actualFile是要发送的文件的完整路径。

答案 1 :(得分:0)

我知道这是一个旧线程,但是我昨天发现它试图解决相同的问题。可能的消息来源说不可能做到这一点,但是通过一种变通办法 IS 是可能的。有很多原因需要这样做。其他论坛上的一些明智的求助者诉诸“但是为什么需要它”。

我必须补充一点,以下解决方案不是最优雅的解决方案,但也许是最简单的解决方案,它使我可以在几个小时内解决问题。

有两个步骤:

  1. 这将导致指向PDF的链接自动触发对话框,询问您是否要保存文件(默认为“取消”)。我通过安装然后删除Adobe Reader做到了。我知道必须通过查看注册表中的某些键或通过配置Web浏览器来解决问题,但是我用完了这个问题。

  2. 将击键发送到弹出对话框。

代码如下:

Public Sub YourFunction()
    '...
    WebBrowser1.Navigate("https://... your URL")
    Wait(2)
    ' Accept question to save
    SendKeys.SendWait("{LEFT}")
    Wait(0.5)
    SendKeys.SendWait("{ENTER}")
    Wait(0.5)
    ' Actually save the file 
    SendKeys.SendWait("{ENTER}")
    Wait(0.5)
    '...
End Sub

需要使用“等待”功能,以使WebBrowser控件有时间实际导航到目标URL。这可能与您的情况有所不同。代码是:

Public Sub Wait(ByVal seconds As Double)
   Static start As Date
   start = Now()
   Do While Now() < start.AddSeconds(seconds)
       System.Windows.Forms.Application.DoEvents()
   Loop 
End Sub

有效。我刚刚下载了1,700个PDF(出于个人目的,不再解释)。不过,这花费了一些时间。