您的位置:首页 > 编程语言 > ASP

vs2010 asp.net webForm Html表格数据模板转换pdf文件,web打印Pdf

2016-07-04 10:09 1116 查看
VS2010



using iTextSharp.tool.xml;

using iTextSharp.text.pdf;

using iTextSharp.tool.xml.pipeline;

using HtmlTable2pdf;

    string fileName = string.Empty;

            dlg.FileName = "创建Pdf";

            dlg.DefaultExt = ".pdf";

            dlg.Filter = "Text documents (.pdf)|*.pdf";

            string strtb = "";

            strtb = @"<style>td {border-bottom-width: 1px; border-bottom-style: solid;border-bottom-color: gray; border-left-width: 1px; border-left-style: solid;border-left-color: gray;} table {border-right-style: solid;border-right-color: gray;border-right-width:
1px;border-top-style: solid;border-top-color: gray;border-top-width: 1px;}</style>

                         <table cellpadding='3' cellspacing='0' style='text-align:left;font-size:10.5pt;font-family: 宋体' width='300' section='页眉'> 

                         <tr align='left' valign='top'><td style='border-left-width: 1px; border-left-style: solid; border-left-color: gray; background-color:#CCCC00' bgcolor='#C0C0C0' width='220'><img border='0' src='' width='60' height='60'/>userObject.companyName</td>

                         <td width='220' class='td2'>这是页眉</td><td section='页码' style='float:left' width='390'>第X页</td></tr></table>

                         <table pageSize='1200,500' id='table2' pageDirection='verticle' pageMargin='10,20,160,10' width='900' cellspacing='0' cellpadding='0'>

                         <section id='表头'>

                         <tr><td style='border:0;'>order.customerName</td><td>'时间:'+(order.billDate).ToString('yyyy年MM月dd日')</td><td>'单号:'+order.number</td><td></td><td></td><td>'时间:'+userObject.getRMBs('123.45')</td></tr>

                         </section>

                         <section id='页头'>

                         <tr><td class='td2'>页头:类别</td><td>价格</td><td>数量</td><td>金额</td><td>仓库</td><td>单位</td></tr>

                         </section>

                         <section id='明细' numPerPage='3'><tr style='code=[userObject.rowNum % 2 == 1? '' : 'background-color:#CCCC00' ]'><td>orderDetail.name+' '+orderDetail.spec</td><td>orderDetail.price</td><td>userObject.getRMB(2345.789866)</td><td>(orderDetail.quantity*orderDetail.price).ToString('F2')</td><td
style='code=[ orderDetail.unitName == '吨'? '' : 'background-color:#00FF66' ]'>orderDetail.unitName</td><td>'金额 :'+userObject.getRMB(orderDetail.amount)</td></tr></section>

                         <section id='页尾'>

                         <tr><td colspan='3'>这是页尾</td><td>(#2016-02-05#).ToString('yyyy年MM月dd日')</td><td></td><td>userObject.companyName</td></tr>

                         <tr><td>小计</td><td colspan='2'>'吨数量:'+(orderDetail.count(orderDetail.iif(unitName ='吨',1,0))+orderDetail.count(billID)+orderDetail.sum(amount))</td><td>'吨'+(orderDetail.sum(amount)).ToString('F2')</td><td>orderDetail.unitName</td><td>background-color</td></tr>

                         </section>

                         <section id='表尾'>

                         <tr><td colspan='3'>这是表尾</td><td>userObject.DateTimeToString('2016-02-05','yyyy年MM月dd日')</td><td>userObject.ToLower('AbcDG')</td><td></td></tr>

                         <tr><td>总计</td><td id='td_money'></td><td>'吨数量 :'+(orderDetail.count(orderDetail.iif(unitName ='吨',1,0))+orderDetail.count(billID)+orderDetail.sum(amount))</td><td></td><td></td><td>'金额 :'+userObject.getRMB(orderDetail.sum(amount))</td></tr>

                         </section>

                         </table>

                         <table cellpadding='3' cellspacing='0' style='text-align:left;font-size:10.5pt;font-family: 宋体' width='300' section='页脚'> 

                         <tr align='left' valign='top'><td style='border-left-width: 1px; border-left-style: solid; border-left-color: gray' bgcolor='#C0C0C0' width='220'>userObject.companyName</td>

                         <td width='220'></td><td section='页码' style='border-bottom-width: 1px; border-bottom-style: solid;background-color:#00ff00; border-bottom-color: gray; float:left' width='390'>第X页 共Y页</td></tr></table>";

            //明细td不支持嵌套

            //只明细td可以code=[]

            DataTable _dtOrder = GenerateOrder();//DBUtility.DbHelperSQL.GetDataSet(sql);

            DataTable _dtOrderDetail = GenerateOrderDetail();// DBUtility.DbHelperSQL.GetDataSet(String.Format("Select * From V_saledetails  where billid='{0}'", _dtOrder.Rows[0]["id"].ToString()));

            //if (_dtOrderDetail.Columns["quantity"].DataType == typeof(string))

            {

                 DataTable eval = new DataTable();

            }

            //FromattedHtmlParser fmp = new FromattedHtmlParser(strtb);

            Html2pdfWorker fmp = new Html2pdfWorker();

            fmp.HtmlTable = strtb;

            fmp.AddTable(_dtOrder, "Order");

            fmp.AddTable(_dtOrderDetail, "orderDetail");

            fmp.DetailTableName = "orderdetail";

            //明细表名称

            ////自定义变量

            fmp.userObject.companyName = "公司A";

            ////自定义函数

            fmp.userObject.ToLower = new Func<string, string>(ToLower);

            fmp.Prase();

            byte[] buff = fmp.SaveToPdf();

            Response.ContentType = "application/pdf";

            Response.BinaryWrite(buff);

        }

        public string ToLower(string str)

        {

            return str.ToLower();

        }

        private DataTable GenerateOrder()

        {

            //DataTable dt = new DataTable("Order");

            DataTable dt = new DataTable();

            dt.Columns.Add("billID", typeof(int));

            dt.Columns.Add("customerName");

            dt.Columns.Add("billDate", typeof(DateTime));

            dt.Columns.Add("number");

            dt.Columns.Add("flag");

            DataRow row = null;

            String[] types = new string[] { "用户1", "用户2", "用户3", "用户4", "用户5" };

            DateTime getDate = DateTime.Now;

            DateTime backDate = DateTime.Now;

            for (int i = 0; i < 10; i++)

            {

                row = dt.NewRow();

                row["billID"] = i + 1;

                row["customerName"] = types[(i * 3) % 5];

                row["billDate"] = getDate.AddDays(i);//.ToString("yyyy-MM-dd");

                row["number"] = "XS20160616";

                row["flag"] = true;

                dt.Rows.Add(row);

            }

            return dt;

        }

        private DataTable GenerateOrderDetail()

        {

            double price, quantity;

            //DataTable dt = new DataTable("orderDetail");

            DataTable dt = new DataTable();

            Random random = new Random();

            String[] types = new string[] { "吨", "公斤" };

            dt.Columns.Add("billID", typeof(int));

            dt.Columns.Add("quantity", typeof(int));

            dt.Columns.Add("name");

            dt.Columns.Add("spec");

            dt.Columns.Add("unitName");

   
a504
        dt.Columns.Add("storageName");

            dt.Columns.Add("price", typeof(double));

            dt.Columns.Add("amount", typeof(double));

            dt.Columns.Add("taxRate", typeof(int));

            DataRow row = null;

            for (int i = 0; i < 5; i++)

            {

                row = dt.NewRow();

                row["billID"] = random.Next(10);

                row["unitName"] = types[(i * 3) % 2];

                row["name"] = "品名A";

                row["spec"] = "规格A";

                row["storageName"] = "仓库A";

                price = random.NextDouble() * 120;

                quantity = random.Next(20, 30);

                row["quantity"] = quantity;

                row["price"] = price;

                row["amount"] = price * quantity;

                row["taxRate"] = 17;

                dt.Rows.Add(row);

            }

            return dt;
        }

下载地址:http://218.95.37.10:8085/Html2pdf.rar

web生成pdf后的直接打印,隐藏iframe
http://blog.csdn.net/luan729/article/details/51916386
如需要定制HtmlTable2pdf.dll请Q729513406
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息