2014-05-07 10 views
0

Я пытаюсь экспортировать PDF-файл с веб-страницы asp.net с основным сайтом. Обратите внимание, что я не использую сетку, я просто хочу экспортировать страницу.Экспорт веб-страницы в формате 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 должен иметь вид \ сервер \ доля.

Описание: Необработанное исключение произошло во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительной информации об ошибке и ее возникновении в коде.

Сведения об исключении: 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», который является бесплатным. –

Смежные вопросы