我需要很好的ITextSharp ASPX到PDF转换示例

时间:2013-07-16 20:43:32

标签: asp.net pdf itextsharp .net

我有几个ASPX Web表单,其中包含许多文本框,单选按钮列表,组合框以及许多其他花哨的Telerik控件。填写页面并单击提交按钮后,整个页面需要转换为PDF。我需要有关如何使用iTextSharp执行此操作的示例。我一直在搞乱一个Test项目,看它是如何工作的,当我添加一个RadTextBox和一个RadComboBox时得到以下异常:

无法将类型为'iTextSharp.text.html.simpleparser.CellWrapper'的对象强制转换为'iTextSharp.text.Paragraph'。 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.InvalidCastException:无法将类型为“iTextSharp.text.html.simpleparser.CellWrapper”的对象强制转换为“iTextSharp.text.Paragraph”。

来源错误:

Line 33:             PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
Line 34:             pdfDoc.Open();
Line 35:             htmlparser.Parse(sr);
Line 36:             pdfDoc.Close();
Line 37:             Response.Write(pdfDoc);

堆栈追踪:

[InvalidCastException:无法将类型为'iTextSharp.text.html.simpleparser.CellWrapper'的对象强制转换为'iTextSharp.text.Paragraph'。]

iTextSharp.text.html.simpleparser.HTMLWorker.ProcessLink() +563
iTextSharp.text.html.simpleparser.HTMLTagProcessor_A.EndElement(HTMLWorker worker, String tag) +36
iTextSharp.text.html.simpleparser.HTMLWorker.EndElement(String tag) +80
iTextSharp.text.xml.simpleparser.SimpleXMLParser.ProcessTag(Boolean start) +136
iTextSharp.text.xml.simpleparser.SimpleXMLParser.Go(TextReader reader) +1950
iTextSharp.text.xml.simpleparser.SimpleXMLParser.Parse(ISimpleXMLDocHandler doc, ISimpleXMLDocHandlerComment comment, TextReader r, Boolean html) +83
iTextSharp.text.html.simpleparser.HTMLWorker.Parse(TextReader reader) +59
WebApplication5._Default.btnExport_Click(Object sender, EventArgs e) in C:\Users\jensenty\Documents\Visual Studio 2008\Projects\WebApplication5\WebApplication5\Default.aspx.cs:35
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565

PDF转换的C#方法:

protected void btnExport_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.Page.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();
}

该异常的解决方案将不胜感激。总的来说,我认为我需要更好地了解如何将iTextSharp用于充满控件的Web表单。

1 个答案:

答案 0 :(得分:0)

我认为如果您的代码完美无缺,那么只有一个问题是使用itextsharp.dll版本创建的,

你应该访问这个链接并下载版本,然后在任何代码完美运行之后,

link

相关问题