C# 将模态对话框窗口转换为pdf

C# 将模态对话框窗口转换为pdf,c#,asp.net,pdf,itext,C#,Asp.net,Pdf,Itext,我正在尝试使用iTextSharp将包含3个数据表的模式对话框转换为pdf: DataTable dtTable = (DataTable)ViewState["LoanPlan"]; DataTable dtTax = (DataTable)ViewState["PlanTaxData"]; DataTable dtPlan = (DataTable)ViewState["PlanAllData"]; 我正在使用此代码尝试并完成它: protected void buttonPDF_Clic

我正在尝试使用iTextSharp将包含3个数据表的模式对话框转换为pdf:

DataTable dtTable = (DataTable)ViewState["LoanPlan"];
DataTable dtTax = (DataTable)ViewState["PlanTaxData"];
DataTable dtPlan = (DataTable)ViewState["PlanAllData"];
我正在使用此代码尝试并完成它:

protected void buttonPDF_Click(object sender, EventArgs e)
{
    Response.ContentType = "application/pdf";
    Response.AddHeader("content-disposition", "attachment;filename=TestPage.pdf");
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    StringWriter sw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(sw);
    this.RenderControl(hw);
    StringReader sr = new StringReader(sw.ToString());
    Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 100f, 0f);
    HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
    PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
    pdfDoc.Open();
    htmlparser.Parse(sr);
    pdfDoc.Close();
    Response.Write(pdfDoc);
    Response.End();
}

但看起来它实际上是在尝试将整个.aspx页面转换为.pdf格式。我应该如何只针对模态对话或3个数据表?

this.RenderControl()
中,this是什么类型?您是指模式对话框扩展器还是window.showModalDialog()?它是一个window.showModalDialog()类型。而buttonPDF是该对话框上的控件,它本身不应包含在PDF中?我会查看控件层次结构,可能没有
this.RenderControl(hw)
,而是类似于
DataTableX.RenderControl(hw)
。或者制作一个包含所有要转换的内容的面板,然后执行
PanelX.RenderControl(hw)
…我会尝试一下。并且在我弄清楚层次结构后更新。另外,当您可以使用
XMLWorker
时,请不要使用
HTMLWorker
。前者是后者的一个更为有限的版本