Я хочу экспортировать Asp.Panel content(text, GridViews)
с CSS в PDF с C# .NET. Я использую iTextSharp и RenderControl с Asp.Panel, но CSS не отображается в PDF.Экспорт Asp.Panel в 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();
Это ASP Panel Я хочу отправить PDF:
<asp:Panel ID="pnlTabs" runat="server" CssClass="TeamTabs">
<div class="repHeader">
<div class="row">
<div style="padding:12px;border-bottom:1px solid #ddd;margin-bottom:1px;overflow:hidden;">
<div class="col4">
<p> <font size="4.5"> <b>Client Scorecard</b> </font> <br>
Run Date: 11/1/2013 4:20:01 AM <br>
For Dates: 9/12013 - 10/31/2013 <br>
Oct 2013 - Filed to Service Complete: 31.18 <br>
Oct 2013 - State Average: 34.45
</p>
</div>
</div>
<p style="text-align: center; margin-top:1px"> <font size="3.5"> <b> BECKER POLIAKOFF (CORAL GABLES) </b>
</font> </p>
</div>
</div>
<div class="row" style="padding-bottom:36px;">
<div class="col9 col-first">
<asp:GridView ID="gvDashRep_Left_first" runat="server" ></asp:GridView>
<asp:GridView ID="gvDashRep_Left_second" runat="server" ></asp:GridView>
<asp:GridView ID="gvDashRep_Left_third" runat="server" ></asp:GridView>
</div>
<div class="col3">
<asp:GridView ID="gvDashRep_Right_first" runat="server" ></asp:GridView>
<asp:GridView ID="gvDashRep_Right_second" runat="server" ></asp:GridView>
<asp:GridView ID="gvDashRep_Right_third" runat="server" ></asp:GridView>
</div>
<p style="text-align: center; margin-top:1px"> <font size="2.5"> *For B/W, items with an asterisk indicate that higer number for Octomber 2013 is considered better. </font> </p>
<div class="col12 col-first">
<asp:GridView ID="gvComments" runat="server" ></asp:GridView>
</div>
</div>
</asp:Panel>
CSS Файл div.row {мин-высота : 1%; ширина: 966 пикселей; margin: 0 auto; переполнение: скрыто; } div.col3 {ширина: 219px; плыть налево; margin-left: 30px;}
Попробуйте добавить обратно в строку, указывающую на ваш css-файл cssResolver.AddCssFile (Server.MapPath («Content/pv-telerik-skin/Grid.provest.css»), true); и посмотреть, генерирует ли он тогда –