我想将html导出为pdf
var document = new Document(); PdfWriter pdfWriter = PdfWriter.GetInstance(document,new FileStream("/my.pdf",FileMode.Create)); pdfWriter.SetFullCompression(); pdfWriter.StrictimageSequence = true; pdfWriter.SetLinearPageMode(); var sr = new StringReader(htmlcode); document.open(); var k = XMLWorkerHelper.GetInstance(); k.ParseXHtml(pdfWriter,document,sr); //here it gave me an exception: Object reference not set to an instance of an object sr.Close(); document.Close(); Response.ContentType = "Application/pdf"; Response.AppendHeader("Content-disposition","attachment; filename="my.pdf"); Response.TransmitFile(@"c:\test\my.pdf"); Response.Flush(); Response.End(); Response.Close();
所有例外:
System.NullReferenceException: Object reference not set to an instance of an object. at iTextSharp.tool.xml.pipeline.html.HtmlPipeline.Close (IWorkerContext context,Tag t,ProcessObject po) at iTextSharp.tool.xml.XMLWorker.EndElement(String tag,String ns) at iTextSharp.tool.xml.parser.XMLParser.EndElement() at iTextSharp.tool.xml.parser.state.ClosingTagState.Process(Char character) at iTextSharp.tool.xml.parser.XMLParser.ParseWithReader(TextReader reader) at iTextSharp.tool.xml.XMLWorkerHelper.ParseXHtml(PdfWriter writer,Document doc,TextReader inp)
解决方法
这一行出错
var k = XMLWorkerHelper.GetInstance(); k.ParseXHtml(pdfWriter,sr);
由于任何一个输入参数的值指向NULL我们可以在传递之前检查它(变量将通过)是否为null或值.
Document pdfDoc = new Document(PageSize.A4,10,10); PdfWriter writer = PdfWriter.GetInstance(pdfDoc,new FileStream(@"D:\Syed\New PDF\PDF.pdf",FileMode.Create));// Output PDF File Path Response.Write("File Created Successfully"); pdfDoc.open(); XMLWorkerHelper.GetInstance().ParseXHtml(writer,pdfDoc,new StreamReader(@"D:\Syed\test.html"));//This is input HTML file path pdfDoc.Close();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。