前台aspx
<input type="button" value="清单报表pdf" οnclick="PrintPdf('list')"/><input type="button" value="组报表pdf" οnclick="PrintPdf('group')"/>
<input type="button" value="子报表pdf" οnclick="PrintPdf('sub')"/><input type="button" value="交叉报表pdf" οnclick="PrintPdf('cross')"/></p>
<p>DataTable.Compute(详见实例)/p>
<p>column.Expression(详见实例)/p>
<p>自定义函数(详见实例)/p>
<p>算术运算符,关系运算符,以及逻辑运算符(详见实例)/p>
<p>预定义函数getRMB(double num)getRMBs(string num)(详见实例)/p>
<p>一些默认的类型方法函数,如double, float, string, DateTime, Convert(详见实例)</p>
<p><b>HtmlTable2pdf.dll</b>(@Jimuruanjian;Q729513406)</p>
</form>
<iframe id="iPrint" style='height:0; width:0;' ></iframe>
<script type="text/javascript">
function PrintPdf(rptype) {
if (document.getElementById("iPrint").attachEvent) {
document.getElementById("iPrint").attachEvent("onload", function () { document.getElementById("iPrint").focus(); document.getElementById("iPrint").contentWindow.print(); });
} else {
document.getElementById("iPrint").onload = function () {
document.getElementById("iPrint").focus(); document.getElementById("iPrint").contentWindow.print();
}
}
document.getElementById("iPrint").src = "./WebForm1.aspx?action=" + rptype;
}
</script>
后台cs
private void cross()
{
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页 共Y页</td></tr></table>
<table pageSize='A5' id='table2' pageDirection='verticle' pageMargin='10,20,160,10' width='900' cellspacing='0' cellpadding='0'>
<section id='表头'>
<tr><td>order.customerName</td><td colspan='code=[userObject.crossNum]'>userObject.ToLower('AbcDG')</td></tr>
</section>
<section id='页头'>
<tr><td colspan='code=[userObject.crossNum + 1]'>order.customerName</td></tr>
<tr><td>仓库\重量单位</td><td cross='1'>dtTypes.unitName</td></tr>
</section>
<section id='明细'>
<tr><td>dtStorage.storageName</td><td cross='1'>orderDetail.sum(orderDetail.iif(unitName=dtTypes.unitName and storageName=dtStorage.storageName,quantity,0))+dtTypes.unitName+dtStorage.storageName</td></tr>
</section>
</table>
<table cellpadding='3' cellspacing='0' style='text-align:left;font-size:10.5pt;font-family: 宋体' width='800' 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>";
/**/
//交叉报表
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()));
DataTable _dtStorage = GenerateStorage();// DBUtility.DbHelperSQL.GetDataSet(String.Format("Select * From V_saledetails where billid='{0}'", _dtOrder.Rows[0]["id"].ToString()));
DataTable _dtTypes = GenerateTypes();// DBUtility.DbHelperSQL.GetDataSet(String.Format("Select * From V_saledetails where billid='{0}'", _dtOrder.Rows[0]["id"].ToString()));
Html2pdfWorker fmp = new Html2pdfWorker();
fmp.HtmlTable = strtb;
fmp.AddTable(_dtOrder, "Order");
fmp.AddTable(_dtOrderDetail, "orderDetail");
fmp.AddTable(_dtStorage, "dtStorage");
fmp.AddTable(_dtTypes, "dtTypes");
fmp.DetailTableName = "orderdetail";
fmp.VerticalTableName = "dtStorage";
fmp.HorizontalTableName = "dtTypes";
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);
}
vs2010 asp.net
实例下载地址:http://218.95.37.10:8091/Html2pdf.rar