2013-05-28 16 views
6
Document document = new Document(PageSize.LETTER, 10, 10, 10, 10); 
StringReader reader = new StringReader(edittedHTML); 
HTMLWorker worker = new HTMLWorker(document); 
string fileName = "test.pdf"; 
PdfWriter.GetInstance(document, new FileStream(fileName, FileMode.Create)); 
document.Open(); 
worker.Parse(reader); 
worker.EndDocument(); 
worker.Close(); 
document.Close(); 

Khi chương trình chạy đến công nhân.Thật, nó phát ra lỗi giống như tiêu đề đã nói.'tham chiếu đối tượng không được đặt thành một thể hiện của đối tượng' cho trình phân tích cú pháp HTMLWorker

HTML được chỉnh sửa là chuỗi HTML của trang HTML.

Bất kỳ ai biết cách giải quyết vấn đề này hoặc điều gì đang xảy ra?

Các stack trace:

 
at iTextSharp.text.html.simpleparser.HTMLWorker.StartElement(String tag, IDictionary`2 attrs) 
at iTextSharp.text.xml.simpleparser.SimpleXMLParser.ProcessTag(Boolean start) 
at iTextSharp.text.xml.simpleparser.SimpleXMLParser.Go(TextReader reader) 
at iTextSharp.text.xml.simpleparser.SimpleXMLParser.Parse(ISimpleXMLDocHandler doc, ISimpleXMLDocHandlerComment comment, TextReader r, Boolean html) 
at iTextSharp.text.html.simpleparser.HTMLWorker.Parse(TextReader reader) 
at TestPdfApplication.Form1.button1_Click(Object sender, EventArgs e) in C:\Users\TLiu\Documents\Visual Studio 2010\Projects\TestPdfApplication\TestPdfApplication\Form1.cs:line 68 
+0

Gỡ lỗi và xem đối tượng công nhân của bạn có thực sự khởi tạo hay không. – neo

+0

@neo Vâng, tôi nghĩ nó đã được khởi tạo. – Tiger

+0

Đó là đến từ bên trong iTextSharp. Có vẻ như HTML của bạn đã bị hỏng. – SLaks

Trả lời

3

Tôi nghĩ vấn đề là một ngoại lệ tham chiếu null bị ném do HTML tags rằng phân tích cú pháp là không thể xử lý. cố gắng xóa các thẻ mặc dù HTMLWorker không còn được hỗ trợ. It's discontinued in favor of XML Worker

1

Dường như tham chiếu null. Hãy thử sử dụng "thuốc" sử dụng "sintaxis" với tất cả các mục IDisposable:

using (HTMLWorker worker = new HTMLWorker(document)) 
       { (......) }