将Asp.Panel导出为PDF?
我想将带有CSS的Asp.Panel content(text, GridViews)
从C#.NET导出为PDF。 我正在使用带有Asp.Panel的iTextSharp和RenderControl,但CSS不是以PDF格式呈现的。
如何解决此问题(使用iTextSharp(如果可能)或以其他方式)?
此代码生成PDF文件:
StringWriter sw = new StringWriter(); HtmlTextWriter htw = new HtmlTextWriter(sw); StringReader sr; string fileName = "C://pdf/GridView.pdf"; var doc = new Document(PageSize.A3, 45, 5, 5, 5); var pdf = fileName; PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(pdf, FileMode.Create)); doc.Open(); HtmlPipelineContext htmlContext = new HtmlPipelineContext(null); htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory()); ICSSResolver cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false); cssResolver.AddCssFile(Server.MapPath("Content/PDFs.css"), true); IPipeline pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new PdfWriterPipeline(doc, writer))); XMLWorker worker = new XMLWorker(pipeline, true); XMLParser xmlParse = new XMLParser(true, worker); this.pnlTabs.RenderControl(htw); sr = new StringReader(sw.ToString()); xmlParse.Parse(sr); xmlParse.Flush(); doc.Close();
这是我要发送给PDF的ASP面板:
BECKER POLIAKOFF (CORAL GABLES)
*For B/W, items with an asterisk indicate that higer number for Octomber 2013 is considered better.
CSS文件div.row {min-height:1%; 宽度:966px; 保证金:0自动; 溢出:隐藏; } div.col3 {width:219px; 向左飘浮; margin-left:30px;}
如果要使用带有css的ITextSharp导出为pdf,还有一个额外的下载(XMLWorker)。 您可以从此处获取XMLWorker
要将其设置为应用您的CSS,您需要执行以下操作
StringWriter sw = new StringWriter(); HtmlTextWriter htw = new HtmlTextWriter(sw); StringReader sr; string fileName = Server.MapPath("PATH TO PDF"); var doc = new Document(PageSize.A3, 45, 5, 5, 5); var pdf = fileName; PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(pdf, FileMode.Create)); doc.Open(); HtmlPipelineContext htmlContext = new HtmlPipelineContext(null); htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory()); ICSSResolver cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false); cssResolver.AddCssFile(Server.MapPath("PATH TO CSS"), true); IPipeline pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new PdfWriterPipeline(doc, writer))); XMLWorker worker = new XMLWorker(pipeline, true); XMLParser xmlParse = new XMLParser(true, worker); control.RenderControl(htw); sr = new StringReader(sw.ToString()); xmlParse.Parse(sr); xmlParse.Flush();
使用相关文件路径替换PATH TO PDF
(保存文件的loacation)和PATH TO CSS
(位置是您的css文件)。 当我不得不这样做时,css文件必须是一个外部文件(.css)。