2012-08-07 62 views
4

我想HTML導出爲PDFXMLWorker異常:對象引用不設置到對象的實例

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) 

回答

1

錯誤在這行

var k = XMLWorkerHelper.GetInstance(); 
k.ParseXHtml(pdfWriter, document, sr); 

//這裏它g AVE我的異常:對象沒有設置爲 對象

實例由於輸入參數中的任何一個的值指向NULL我們可以檢查它(變量要通過)其是否爲空或價值,在通過之前。

這下面的代碼僅僅是足以讓獲得HTML內容,並將其寫入PDF文件

Document pdfDoc = new Document(PageSize.A4, 10, 10, 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(); 

它會從HTML文件中讀取並寫了他們進入創建PDF文件

相關問題