2010-05-26 38 views
12

Tôi làm cách nào để tải xuống tệp PDF và lưu trữ vào đĩa bằng vb.NET hoặc C#?Tải xuống pdf theo lập trình

URL (của PDF) có một số chuyển đổi đang diễn ra trước khi đạt được PDF cuối cùng.

tôi đã cố gắng dưới đây nhưng dường như PDF bị hỏng khi tôi cố gắng để mở tại địa phương,

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

bạn có thể hiển thị) chức năng (GetFileStream không? –

+0

Không cần phải gọi Flush() nếu bạn định gọi Close(). –

+0

Bản thân pdf có bị hỏng không? Mã tôi đăng hoạt động cho IRS được cung cấp pdf. Thiết lập khác tôi có thể nghĩ là sử dụng phương thức WebClients DownloadData và ghi byte [] vào đĩa rồi. – Pat

Trả lời

15

Bạn có thể thử sử dụng lớp WebClient (System.Net namespace) để làm điều này mà sẽ tránh được bất kỳ công việc dòng Về phía bạn.

Mã C# sau lấy mẫu IRS và lưu nó vào C: \ Temp.pdf.

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

Đã thử rằng, mở pdf tôi nhận được .... "Adobe Reader không thể mở tệp vì nó không phải là loại tệp được hỗ trợ hoặc do tệp đã bị hỏng" blah blah blah " – Perplexed

+0

chức năng GetFileStream: Chức năng được bảo vệ GetFileStream (URL ByVal như string) như MemoryStream Dim _url As string = URL Dim _wb như WebClient = WebClient New Dim mybuffer() As Byte Dim _str như MemoryStream = Nothing Hãy thử mybuffer = _wb.DownloadData (_url) _str = New MemoryStream (mybuffer) Catch ex Như Exception _str = Nothing End Try Return _str End Function – Perplexed

+0

này có thể làm việc. và đảm bảo rằng bạn đặt quyền bảo mật cho IISUSER nếu bạn đang đặt mã ur cho trang web. –

4

Bạn cũng có thể thử các mẫu mã sau đây để tả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(); 
Các vấn đề liên quan