0

我有一个动态生成的 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/")

谢谢

4

2 回答 2

0

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

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

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

于 2012-10-06T20:41:04.290 回答
0

我知道这是一个旧线程,但我昨天发现它试图解决同样的问题。可能消息来源说不可能做到这一点,但可以通过一种解决方法来做到这一点。需要这样做的原因有很多;其他论坛中的一些俏皮话诉诸“但你为什么需要它”。

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

有两个步骤:

  1. 这将导致 PDF 链接自动触发对话框,询问您是否要保存文件(默认为“取消”)。我通过安装然后删除 Adob​​e 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(出于我自己的目的,不打算解释)。不过,这花了一点时间。

于 2018-09-27T16:24:32.020 回答