Распечатать страницу asp.net в формате PDF

Я хотел бы распечатать страницу в формате PDF. Но дело в том, что перед печатью я хочу развернуть все элементы управления (GridView, Treeview...).

Я нашел некоторые решения, использующие Page.RenderControl (или Control.RenderControl), но у меня возникла ошибка: "Страница может иметь только один тег формы на стороне сервера". Я понимаю ошибку (необходимо добавить только одну форму). но я бы подумал, что RenderControl будет писать в новом Writer (а не в текущем).

    Dim stringWriter As New StringWriter()
    Dim htmlWriter As New HtmlTextWriter(stringWriter)
    Me.Page.RenderControl(htmlWriter)

Чтобы расширить элементы управления, я должен изменить свойства и затем отобразить страницу. После рендеринга в PDF я бы хотел, чтобы страница загружалась как обычно. Ответ. Завершите загрузку, и страница станет пустой.

Есть ли (хорошая) альтернатива для взятия содержимого страницы, изменения содержимого (например: grid.AllowPaging = False) и отправки его в поток?

1 ответ

Попробуйте использовать HtmlForm вместо Me.Page.RenderControl

        Response.ContentType = "application/pdf";
        Response.AddHeader("content-disposition", "attachment;filename=this.pdf");
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        StringWriter sw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(sw);
        HtmlForm frm = new HtmlForm();
        GridView1.AllowPaging = false;
        GridView1.Parent.Controls.Add(frm);
        frm.Controls.Add(GridView1);
        frm.RenderControl(hw);
        StringReader sr = new StringReader(sw.ToString());
        Document PDFdoc = new Document(PageSize.A4, 10.0F, 10.0F, 10.0F, 0.0F);
        iTextSharp.text.html.simpleparser.HTMLWorker htmlparser =   new iTextSharp.text.html.simpleparser.HTMLWorker(PDFdoc);
        PdfWriter.GetInstance(PDFdoc, Response.OutputStream);
        PDFdoc.Open();
        htmlparser.Parse(sr);
        PDFdoc.Close();
        Response.Write(PDFdoc);
        Response.End();
Другие вопросы по тегам