我有一个动态生成的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/")
由于
答案 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 是可能的。有很多原因需要这样做。其他论坛上的一些明智的求助者诉诸“但是为什么需要它”。
我必须补充一点,以下解决方案不是最优雅的解决方案,但也许是最简单的解决方案,它使我可以在几个小时内解决问题。
有两个步骤:
这将导致指向PDF的链接自动触发对话框,询问您是否要保存文件(默认为“取消”)。我通过安装然后删除Adobe Reader做到了。我知道必须通过查看注册表中的某些键或通过配置Web浏览器来解决问题,但是我用完了这个问题。
将击键发送到弹出对话框。
代码如下:
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(出于个人目的,不再解释)。不过,这花费了一些时间。