「li」タグと「image」タグを使用して、単純な(今のところ)ビューを変換しようとしています。コントローラーでは、最初にビューを文字列として取得しています
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();
}
その後、このドキュメントに従って文字列を解析しようとしています
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;
しかし、このエラーが発生し、何が問題なのかわかりません
オブジェクト参照がオブジェクト インスタンスに設定されていません。
スタック
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 が例外をスローしている理由がわかりません。アイデアはありますか? ありがとう