C# 我想保存div/Panel下的asp控件的内容,并将其保存为PDF

C# 我想保存div/Panel下的asp控件的内容,并将其保存为PDF,c#,asp.net,pdf,pdf-generation,itextsharp,C#,Asp.net,Pdf,Pdf Generation,Itextsharp,我已经使用itextsharp dll生成了PDF。但是,我一直在抱怨,它说like Asp控件必须放在带有runat=server的表单标记中 我的母版页有runat=server的表单标签但它在pnlMain.RenderControl上给了我一个异常,告诉服务器控件必须在表单标签内。有相同的想法吗?提前谢谢 我的Currentview.aspx页面如下所示 <asp:panel runat="server" id="pnlMain"> <div id="dvEdi

我已经使用itextsharp dll生成了PDF。但是,我一直在抱怨,它说like Asp控件必须放在带有runat=server的表单标记中

我的母版页有runat=server的表单标签但它在pnlMain.RenderControl上给了我一个异常,告诉服务器控件必须在表单标签内。有相同的想法吗?提前谢谢

我的Currentview.aspx页面如下所示

<asp:panel runat="server" id="pnlMain">
    <div id="dvEditpageheader1"/>
    <p>...</P>
    div id="dvEditpageheader2"/>
    <p>...</P>
    div id="dvEditpageheader3"/>
    <p>...</P>
<asp:Button runat="server" ID="btnPDF" Text="Save to PDF" OnClick="btnPDF_Click" />
</asp:panel>

可能重复(请停止发布有关
HTMLWorker
的问题。我们已经通知开发人员几年了,现在不再支持
HTMLWorker
)。。。除了使用
XMLWorker
而不是
HTMLWorker
之外,更大的问题是,当
母版页中已经有一个
表单标签时,为什么还要尝试添加另一个
表单
标签?
母版页
应该有一个或类似的标签,以添加任何服务器或用户控件。除非你把那个部分弄清楚,否则什么都不会起作用。@kuujinbo我的母版页还有内容占位符和表单标签。但是当我运行应用程序时,为什么它会在我的currentview.aspx页面上询问抛出异常,因为textbox控件必须位于表单标记内。uuuh…是的,我从您最初的问题中完全理解了这一点。不过,我认为你不理解我的评论。
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=Panel.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
StringWriter stringWriter = new StringWriter();
HtmlTextWriter htmlTextWriter = new HtmlTextWriter(stringWriter);
pnlMain.RenderControl(htmlTextWriter);

StringReader stringReader = new StringReader(stringWriter.ToString());
Document Doc = new Document(PageSize.A4, 10f, 10f, 100f, 0f);
HTMLWorker htmlparser = new HTMLWorker(Doc);
PdfWriter.GetInstance(Doc, Response.OutputStream);

Doc.Open();
htmlparser.Parse(stringReader);
Doc.Close();
Response.Write(Doc);
Response.End()