2014-05-07 176 views
0

我試圖從具有主站點的asp.net網頁導出PDF。請注意,我沒有使用網格視圖,我只想導出頁面本身。將網頁導出爲PDF

這是我目前有:

Response.ContentType = "application/pdf" 
Response.AddHeader("content-disposition", "attachment;filename=TestPage.pdf") 
Response.Cache.SetCacheability(HttpCacheability.NoCache) 
Dim sw As New StringWriter() 
Dim hw As New HtmlTextWriter(sw) 
Me.Page.RenderControl(hw) 
Dim sr As New StringReader(sw.ToString()) 
Dim pdfDoc As New iTextSharp.text.Document(PageSize.A4, 10.0F, 10.0F, 100.0F, 0.0F) 
Dim htmlparser As New HTMLWorker(pdfDoc) 
PdfWriter.GetInstance(pdfDoc, Response.OutputStream) 
pdfDoc.Open() 
htmlparser.Parse(sr) 
pdfDoc.Close() 
Response.Write(pdfDoc) 
Response.[End]() 

的錯誤消息我得到的是:

的UNC路徑應該是這樣的形式\服務器\份額。

描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。

異常詳細信息:System.ArgumentException:UNC路徑應該是\ server \ share的形式。

Source Error: 


Line 46:    PdfWriter.GetInstance(pdfDoc, Response.OutputStream) 
Line 47:    pdfDoc.Open() 
Line 48:    htmlparser.Parse(sr) 
Line 49:    pdfDoc.Close() 
Line 50:    Response.Write(pdfDoc) 

任何幫助將是偉大的,謝謝。

回答

0

你必須使用一些第三方DLL,如免費的「itextsharp.dll」。你可以在下面的代碼中使用它。

Public Overrides Sub VerifyRenderingInServerForm(control As Control) 
    ' Verifies that the control is rendered 

End Sub 

Protected Sub btnExport_Click(sender As Object, e As EventArgs) 
    If gridview.Rows.Count > 0 Then 
     Dim sw As New StringWriter() 
     Dim htw As New HtmlTextWriter(sw) 

     gridview.RenderControl(htw) 

     Dim mem = New MemoryStream() 

     Dim document As New Document(PageSize.LETTER, 50, 50, 50, 50) 
     PdfWriter.GetInstance(document, mem) 

     document.Open() 

     Dim hw As New iTextSharp.text.html.simpleparser.HTMLWorker(document) 
     hw.Parse(New StringReader(sw.ToString())) 
     document.Close() 

     Response.ClearContent() 
     Response.ClearHeaders() 
     Response.ContentType = "application/pdf" 
     Response.AddHeader("Content-Disposition", "attachment; filename=" + DateTime.Now) 

     Response.BinaryWrite(mem.ToArray()) 
     Response.[End]() 
     Response.Flush() 
     Response.Clear() 
    End If 
End Sub 
+0

我沒有使用GridView,但它已經工作,並允許我下載文件,所以謝謝你,但它無法打開它。 – SeanSilver

+0

我已經更新了上面的代碼和免費的用戶「itextsharp.dll」。 –