0
我試圖用「li」和「image」標籤來轉換簡單(現在)的視圖。 在控制器首先我得到的觀點作爲字符串用HTML解析HTML到iTextSharp和MVC 4
ViewData.Model = model;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, "Print");
var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
stringView = sw.GetStringBuilder().ToString();
}
之後,我試圖根據這個documentation
Document document = new Document();
document.SetPageSize(iTextSharp.text.PageSize.A4);
document.Open();
PdfWriter writer = PdfWriter.GetInstance(document, Response.OutputStream);
HtmlPipelineContext htmlContext = new HtmlPipelineContext(null);
htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory());
htmlContext.SetImageProvider(new ImageProvider(Server.MapPath(Config.UploadDirectory), Request.Url.ToString()));
//StyleAttrCSSResolver cssRevolver = new StyleAttrCSSResolver();
var cssRevolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(true);
cssRevolver.AddCssFile(Server.MapPath("~/Content/Site.css"), false);
IPipeline pipeline = new CssResolverPipeline(cssRevolver, new HtmlPipeline(htmlContext, new PdfWriterPipeline(document, writer)));
XMLWorker worker = new XMLWorker(pipeline, true);
XMLParser parser = new XMLParser(worker);
var memViewStream = new MemoryStream(Encoding.UTF8.GetBytes(stringView));
memViewStream.Position = 0;
parser.Parse(memViewStream); //this line throw the exception
document.Close();
writer.Close();
Response.ContentType = "application/pdf";
return null;
解析字符串,但我得到這個錯誤,可以」 t弄清楚什麼是錯的
未將對象引用設置爲對象的實例。
堆棧
at iTextSharp.text.pdf.PdfOutline.InitOutline(PdfOutline parent, String title, Boolean open)
at iTextSharp.text.pdf.PdfOutline..ctor(PdfOutline parent, PdfDestination destination, Paragraph title, Boolean open)
at iTextSharp.text.pdf.PdfOutline..ctor(PdfOutline parent, PdfDestination destination, Paragraph title)
at iTextSharp.tool.xml.html.Header.WriteH.Write(PdfWriter writer, Document doc)
at iTextSharp.text.pdf.PdfDocument.Add(IElement element)
at iTextSharp.text.Phrase.Process(IElementListener listener)
at iTextSharp.text.pdf.PdfDocument.Add(IElement element)
at iTextSharp.text.List.Process(IElementListener listener)
at iTextSharp.text.pdf.PdfDocument.Add(IElement element)
at iTextSharp.text.Document.Add(IElement element)
at iTextSharp.tool.xml.pipeline.end.PdfWriterPipeline.Write(IWorkerContext context, ProcessObject po)
at iTextSharp.tool.xml.pipeline.end.PdfWriterPipeline.Close(IWorkerContext context, Tag t, ProcessObject po)
at iTextSharp.tool.xml.XMLWorker.EndElement(String tag, String ns)
at iTextSharp.tool.xml.parser.XMLParser.EndElement()
我沒有想法,爲什麼InitOutline拋出exception.Any想法? 感謝
什麼iTextSharp的和XmlWorker的版本是你使用? –