2010-05-26 16 views
12

¿Cómo puedo descargar un PDF y almacenarlo en un disco usando vb.NET o C#?Descargar pdf programáticamente

La URL (del PDF) tiene alguna advertencia en curso antes de llegar al PDF final.

Probé los de abajo, pero el PDF parece corrompido cuando intento abrir localmente,

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

Se puede mostrar la función GetFileStream(), así? –

+0

No es necesario llamar a Flush() si va a llamar a Close(). –

+0

¿El pdf está dañado? El código que publiqué funciona para el IRS proporcionado pdf. Otra configuración en la que puedo pensar es usar el método Web DataData DownloadData y escribir el byte [] en el disco. – Pat

Respuesta

15

Usted puede tratar de utilizar la clase WebClient (System.Net espacio de nombres) para hacer esto lo que evitará cualquier trabajo corriente de tu lado.

El siguiente código C# toma un formulario del IRS y lo guarda en C: \ Temp.pdf.

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

Intenté que, al abrir el pdf recibo .... "Adobe Reader no pudo abrir el archivo porque no es un tipo de archivo compatible o porque el archivo se ha dañado bla bla" – Perplexed

+0

Función GetFileStream: Función protegida GetFileStream (URL ByVal como secuencia) como MemoryStream Dim _url como secuencia = URL Dim _wb Como cliente Web = Nuevo cliente Web Dim mybuffer() As Byte Dim _str Como MemoryStream = Nada Trate mybuffer = _wb.DownloadData (_url) _str = Nueva MemoryStream (mybuffer) Catch ex As Exception _str = Nada End Try Volver _str Función Fin – Perplexed

+0

Esto puede funcionar. y asegúrese de configurar el permiso de seguridad para IISUSER si está poniendo su código para la página web. –

4

También puede probar el siguiente ejemplo de código para descargar archivos pdf

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