繁体   English   中英

将Asp.Panel导出为PDF?

[英]Export Asp.Panel to PDF?

我想使用CSS将Asp.Panel content(text, GridViews)与CSS从C#.NET导出为PDF。 我将iTextSharp和RenderControl与Asp.Panel一起使用,但是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面板:

     <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%; 宽度:966px; 保证金:0自动; 溢出:隐藏; } div.col3 {width:219px; 向左飘浮; 左边距: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 (保存文件的位置)和PATH TO CSS (css文件所在的位置)。 当我必须这样做时,css文件必须是一个外部文件(.css)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM