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

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");
            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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值