2013-09-22 69 views
0

我需要獲取從aspx站點生成的pdf文件。從URL獲取動態創建的PDF

背景故事

我想從一個網站schedueles,我得到的URL scheduele,含參數succeded。如果您按照網址,您將顯示一個PDF流,由該網站使用給定的參數創建。

http://www.novasoftware.se/ImgGen/schedulegenerator.aspx?format=pdf&schoolid=57240/sv-se&type=1&id=%7bD8920398-FA90-4960-BD47-69A8EFF7204D%7d&period=&week=38&mode=0&printer=1&colors=2&head=1&clock=1&foot=1&day=0&width=2480&height=3507&count=1&decrypt=0

該URL的網站使用,以獲得相應的scheduele並將其顯示爲一個PDF文件。 因爲它不是理論上PDF文件,我無法通過下載它作爲一個:

Dim Downloader As New WebClient 
    Downloader.DownloadFile(URL, fileName) 

無論是我可以下載的內容使用字符串...

Dim Downloader As New WebClient 
    Dim Result As String = Downloader.DownloadString(URL) 

...因爲由於缺少參數,將導致500服務器錯誤。

顯示文件/流/文檔或其真實名稱的唯一方法是通過瀏覽器訪問給定的URL。鑑於此,我嘗試通過WebBrowser控件獲取PDF。但由於它「無法顯示XML頁面」(導航到scheduele URL時顯示錯誤),我也無法使用該方法。

所以我的問題是,如何以PDF格式下載此數據或者如何將這些數據作爲可以使用StreamReader讀取的數據流來獲取?

圖片的標題說明:

該頁面使用沒有進一步的客戶端連接,所以我不能走回頭路了。 (我使用Fiddler2來跟蹤所有連接)

使用招,我可以告訴大家,網址SomethingSomething.com/Something.aspx生成PDF並顯示。所生成的文檔(通過的Fiddler)的第幾行

%PDF-1.4

%由WPCubed GmbH的V3.54x wPDF [0]

1 0 OBJ

<>

還有更多的信息,我可以從小提琴手得到這個網站,所以如果你需要它或者自己嘗試一下或者問我這裏要補充的信息。

回答

1

使用下面的代碼將文件下載到內存流:

Dim webRes As HttpWebResponse = Nothing 
Dim memStream As New MemoryStream 

Try 
    Dim webReq As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest) 
    webReq.Credentials = CredentialCache.DefaultCredentials 
    webRes = webReq.GetResponse 

    Dim resStream As Stream = webRes.GetResponseStream 

    Dim bytesRead As Integer 

    Do 
     Dim buffer(1023) As Byte 
     bytesRead = resStream.Read(buffer, 0, buffer.Length) 
     memStream.Write(buffer, 0, bytesRead) 
    Loop Until bytesRead = 0 

Catch ex As Exception 

Finally 
    If webRes IsNot Nothing Then 
     webRes.Close() 
     webRes = Nothing 
    End If 

    memStream.Seek(0, SeekOrigin.Begin) 

End Try 

' optionally save the stream into a file 
memStream.WriteTo(New FileStream("d:\filename.pdf", FileMode.Create)) 
+0

這似乎正是我需要的,但它不工作。按原樣運行代碼後,它將輸出0字節的文件。在檢查ex.Message之後,它會顯示「500 server error」錯誤,如果我將它粘貼到瀏覽器中(如果需要,請測試以上內容),但不能在我使用代碼抓取它時使用。 – Alex

+0

我使用上面的鏈接來測試代碼,它工作得很好。 – ajakblackgoat

+0

事實上,我嘗試了上面的'Downloader.DownloadFile(URL,fileName)'代碼並設法下載並保存文件。 – ajakblackgoat