2010-05-26 19 views
12

Come posso scaricare un PDF e memorizzare su hard disk utilizzando vb.NET o C#?Scarica il pdf di programmazione

L'URL (del PDF) ha qualche rediection succedendo prima di raggiungere il PDF finale.

Ho provato il sotto, ma il PDF sembra non funzionare quando si tenta di aprire a livello locale,

Dim PdfFile As FileStream = File.OpenWrite(saveTo) 
Dim PdfStream As MemoryStream = GetFileStream(pdfURL) 
PdfStream.WriteTo(PdfFile) 
PdfStream.Flush() 
PdfStream.Close() 
PdfFile.Flush() 
PdfFile.Close() 
+0

Potete mostrare la funzione GetFileStream() come bene? –

+0

Non c'è bisogno di chiamare Flush() se avete intenzione di chiamare Close(). –

+0

Il file PDF è corrotto? Il codice che ho pubblicato funziona per il pdf fornito da IRS. Un'altra configurazione che posso pensare è quella di utilizzare il metodo DownloadDati WebClients e scrivere quindi il byte [] su disco. – Pat

risposta

15

Si può provare a utilizzare la classe WebClient (System.Net namespace) per fare questo che eviterà qualsiasi lavoro flusso dalla tua parte.

Il seguente codice C# afferra un modulo IRS e lo salva in C: \ Temp.pdf.

using(WebClient client = new WebClient()) 
{ 
    client.DownloadFile("http://www.irs.gov/pub/irs-pdf/fw4.pdf", @"C:\Temp.pdf"); 
} 
+2

provato, aprendo pdf ottengo .... "Adobe Reader Impossibile aprire il file perché è o non è un tipo di file supportato o perché il file è stato danneggiato bla bla" – Perplexed

+0

GetFileStream funzione: Protected Funzione GetFileStream (ByVal URL come stringa) come MemoryStream Dim _url come stringa = URL Dim _wb come WebClient = Nuova WebClient Dim mybuffer() As Byte Dim _str come MemoryStream = Nothing Prova mybuffer = _wb.DownloadData (_url) _str = nuovo MemoryStream (mybuffer) Fermo ex come Exception _str = Nothing End Try ritorno _str End Function – Perplexed

+0

Questo può funzionare. e assicurati di impostare il permesso di sicurezza su IISUSER se stai inserendo il tuo codice per la pagina web. –

4

Si può anche provare il seguente codice di esempio per scaricare i file pdf

Response.ContentType = "Application/pdf"; 
Response.AppendHeader("Content-Disposition", "attachment; filename=Test_PDF.pdf"); 
Response.TransmitFile(Server.MapPath("~/Files/Test_PDF.pdf")); 
Response.End(); 
Problemi correlati