网站首页快照,如何推广seo,建筑工程合同书范本2023版,青海网站如何建设说明本教程主要说明如何使用Magicodes.IE.Pdf完成Pdf收据导出要点导出PDF数据自定义PDF模板导出单据如何批量导出单据导出特性说明PdfExporterAttributePdfExporterAttribute特性用于设置Pdf导出的总体设置#xff0c;比如方向、纸张等。主要包含如下设置#xff1a;Name:文档… 说明本教程主要说明如何使用Magicodes.IE.Pdf完成Pdf收据导出要点导出PDF数据自定义PDF模板导出单据如何批量导出单据导出特性说明PdfExporterAttributePdfExporterAttribute特性用于设置Pdf导出的总体设置比如方向、纸张等。主要包含如下设置Name:文档标题FontSize:字体大小Orientation 方向(横向或纵向)PaperKind 纸张类型默认A4IsWriteHtml 是否输出HTML模板IsEnablePagesCount是否启用分页数Encoding编码默认utf-8HeaderSettings导出头部设置FooterSettings导出底部设置ExporterHeaderAttributeExporterHeaderAttribute 特性用于设置列头信息在Pdf表格中可用于设置显示名称。DisplayName 显示名称使用步骤1.安装包Magicodes.IE.PdfInstall-Package Magicodes.IE.Pdf
2.导出PDF数据创建Dto类public class Student{/// summary/// 姓名/// /summarypublic string Name { get; set; }/// summary/// 年龄/// /summarypublic int Age { get; set; }}
public async Task ExportPdf(){var exporter new PdfExporter();var result await exporter.ExportListByTemplate(test.pdf, new ListStudent(){new Student{Name MR.A,Age 18},new Student{Name MR.B,Age 19},new Student{Name MR.B,Age 20}});}
导出内容如下所示上述代码导出了一个简单的Pdf表格使用的Magicodes.IE中内置的表格模板。如果我们需要自定义标题可以通过【ExporterHeader】特性来设置[PdfExporter(Name 学生信息)]public class Student{/// summary/// 姓名/// /summary[ExporterHeader(DisplayName 姓名)][Display(Name Display姓名)]public string Name { get; set; }/// summary/// 年龄/// /summary[ExporterHeader(DisplayName 年龄)]public int Age { get; set; }}
PdfExporter 通过Name属性来定义文档标题ExporterHeader DisplayName用来定义属性名称Display同样定义属性名称但是优先级小于ExporterHeader通过修改上述代码执行结果如下所示3.通过模板导出PDF收据创建导出模板!DOCTYPE htmlhtml langen xmlnshttp://www.w3.org/1999/xhtmlheadmeta charsetutf-8/title/titlestyle typetext/cssbody { font-family: SimSun !important; }p { margin: 0px; }footer {color: #333;font-size: 1.2rem;margin-bottom: 1.5rem;margin-right: 5%;margin-top: 1.2rem;text-align: right;}table,td {border: 1px solid #444;border-collapse: collapse;/* text-align: center; */height: 2rem;padding: 5px;}
/style
/headbody
p stylecolor: #000; font-size: 1.8rem; height: 32px; text-align: center;Model.Title
/p
p stylecolor: #333; font-size: 1.2rem; margin-left: 5%; margin-top: 1%;textNOModel.Data.Code/texttext stylepadding-left: 52%; text-align: right;交易时间Model.Data.TradeTime.ToString(yyyy-MM-dd HH:mm:ss)/text
/ptable width90% stylemargin-left: 5%; margin-top: 1%;tr stylefont-size: 1rem;td styletext-align: center; width: 11%;交款姓名/tdtd colspan2Model.Data.Name/tdtd styletext-align: center; width: 13%;身份证号码/tdtd colspan3Model.Data.IdNo/td/trtr stylefont-size: 1rem;td styletext-align: center交易金额/tdtd colspan6spanModel.Data.Amount/spanspan stylepadding: 0 2% 0 2%;人民币(大写):/spanspanModel.Data.UppercaseAmount/span/td/trtr stylefont-size: 1rem;td styletext-align: center收款方式/tdtd colspan2Model.Data.PaymentMethod/tdtd styletext-align: center; width: 13%;交易状态/tdtd colspan3Model.Data.TradeStatus/td/trtr stylefont-size: 1rem;td styletext-align: center收款事由/tdtd stylewidth: 22.3%;Model.Data.Remark/tdtd styletext-align: center; width: 11%;入学年级/tdtd stylewidth: 22.3%; colspan2Model.Data.Grade/tdtd styletext-align: center; width: 11%;专业/tdtd stylewidth: 22.3%;Model.Data.Profession/td/tr
/table
/body
/html
如上述代码所示为了便于模板的编写Magicodes.IE支持HTML模板的编写。创建Dto类[Exporter(Name 湖南心莱信息科技有限公司电子收款凭证)]public class ReceiptInfo{/// summary/// 交易时间/// /summarypublic DateTime TradeTime { get; set; }/// summary/// 姓名/// /summarypublic string Name { get; set; }/// summary/// 身份证/// /summarypublic string IdNo { get; set; }/// summary/// 金额/// /summarypublic decimal Amount { get; set; }/// summary/// 支付方式/// /summarypublic string PaymentMethod { get; set; }/// summary/// 交易状态/// /summarypublic string TradeStatus { get; set; }/// summary/// 备注/// /summarypublic string Remark { get; set; }/// summary/// 年级/// /summarypublic string Grade { get; set; }/// summary/// 专业/// /summarypublic string Profession { get; set; }/// summary/// 收款人/// /summarypublic string Payee { get; set; }/// summary/// 大写金额/// /summarypublic string UppercaseAmount { get; set; }/// summary/// 编号/// /summarypublic string Code { get; set; }}
如上代码片段通过Exporter特性去指定模板中的Title当然在我们实际开发中也可以不通过该属性去做指定毕竟我们这一块也是完全自定义的如何使用自定义模板导出代码如下所示public async Task ExportReceipt(){var tplPath Path.Combine(Directory.GetCurrentDirectory(), TestFiles, ExportTemplates,receipt.cshtml);var tpl File.ReadAllText(tplPath);var exporter new PdfExporter();//此处使用默认模板导出var result await exporter.ExportByTemplate(test.pdf,new ReceiptInfo{Amount 22939.43M,Grade 2019秋,IdNo 43062619890622xxxx,Name 张三,Payee 湖南心莱信息科技有限公司,PaymentMethod 微信支付,Profession 运动训练,Remark 学费,TradeStatus 已完成,TradeTime DateTime.Now,UppercaseAmount 贰万贰仟玖佰叁拾玖圆肆角叁分,Code 19071800001}, tpl);}
通过上述代码我们需要进行指定传递模板内容最终导出效果如下4.批量导出PDF收据在某些情况下我们需要将多条数据导出到一个Pdf就比如银行提供的批量收据。通过Magicodes.IE也可以非常简单的实现类似的需求。主要步骤如下所示创建模板!DOCTYPE htmlhtml langen xmlnshttp://www.w3.org/1999/xhtmlheadmeta charsetutf-8/title/titlestyle typetext/cssbody { font-family: SimSun !important; }p { margin: 0px; }footer {color: #333;font-size: 1.2rem;margin-bottom: 1.5rem;margin-right: 5%;margin-top: 1.2rem;text-align: right;}table,td {border: 1px solid #444;border-collapse: collapse;height: 2rem;padding: 5px;}.evenNum {margin-bottom: 8%;padding-top: 10%;}
/style
/headbody
for (var i 0; i Model.Data.ReceiptInfoInputs.Count; i)
{div styleheight: 41%; width: 100%; class(i % 2 0 ? : evenNum)p stylecolor: #000; font-size: 1.8rem; height: 32px; text-align: center;Model.Data.Title/pp stylecolor: #333; font-size: 1.2rem; margin-left: 5%; margin-top: 1%;textNOModel.Data.ReceiptInfoInputs[i].Code/texttext stylepadding-left: 52%; text-align: right;交易时间Model.Data.ReceiptInfoInputs[i].TradeTime.ToString(yyyy-MM-dd HH:mm:ss)/text/ptable width90% stylemargin-left: 5%; margin-top: 1%;tr stylefont-size: 1rem;td styletext-align: center; width: 11%;交款姓名/tdtd colspan2Model.Data.ReceiptInfoInputs[i].Name/tdtd styletext-align: center; width: 13%;身份证号码/tdtd colspan3Model.Data.ReceiptInfoInputs[i].IdNo/td/trtr stylefont-size: 1rem;td styletext-align: center交易金额/tdtd colspan6spanModel.Data.ReceiptInfoInputs[i].Amount/spanspan stylepadding: 0 2% 0 2%;人民币(大写):/spanspanModel.Data.ReceiptInfoInputs[i].UppercaseAmount/span/td/trtr stylefont-size: 1rem;td styletext-align: center收款方式/tdtd colspan2Model.Data.ReceiptInfoInputs[i].PaymentMethod/tdtd styletext-align: center; width: 13%;交易状态/tdtd colspan3Model.Data.ReceiptInfoInputs[i].TradeStatus/td/trtr stylefont-size: 1rem;td styletext-align: center收款事由/tdtd stylewidth: 22.3%;Model.Data.ReceiptInfoInputs[i].Remark/tdtd styletext-align: center; width: 11%;入学年级/tdtd stylewidth: 22.3%; colspan2Model.Data.ReceiptInfoInputs[i].Grade/tdtd styletext-align: center; width: 11%;专业/tdtd stylewidth: 22.3%;Model.Data.ReceiptInfoInputs[i].Profession/td/tr/table/div
}
/body
/html
创建Dto类 /// summary/// 批量导出Dto/// /summary[PdfExporter(Orientation Orientation.Portrait, PaperKind PaperKind.A5)]public class BatchReceiptInfoDto{/// summary/// 交易时间/// /summarypublic DateTime TradeTime { get; set; }/// summary/// 姓名/// /summarypublic string Name { get; set; }/// summary/// 身份证/// /summarypublic string IdNo { get; set; }/// summary/// 金额/// /summarypublic decimal Amount { get; set; }/// summary/// 支付方式/// /summarypublic string PaymentMethod { get; set; }/// summary/// 交易状态/// /summarypublic string TradeStatus { get; set; }/// summary/// 备注/// /summarypublic string Remark { get; set; }/// summary/// 年级/// /summarypublic string Grade { get; set; }/// summary/// 专业/// /summarypublic string Profession { get; set; }/// summary/// 大写金额/// /summarypublic string UppercaseAmount { get; set; }/// summary/// 编号/// /summarypublic string Code { get; set; }}
如何使用public async Task BathExportReceipt(){var tplPath Path.Combine(Directory.GetCurrentDirectory(), TestFiles, ExportTemplates,batchReceipt.cshtml);var tpl File.ReadAllText(tplPath);var exporter new PdfExporter();var input new BatchReceiptInfoInput{Payee 湖南心莱信息科技有限公司,ReceiptInfoInputs new ListBatchReceiptInfoDto()};for (var i 0; i 20; i)input.ReceiptInfoInputs.Add(new BatchReceiptInfoDto{Amount 22939.43M,Grade 2019秋,IdNo 43062619890622xxxx,Name 张三,PaymentMethod 微信支付,Profession 运动训练,Remark 学费,TradeStatus 已完成,TradeTime DateTime.Now,UppercaseAmount 贰万贰仟玖佰叁拾玖圆肆角叁分,Code 1907180000 i});//此处使用默认模板导出var result await exporter.ExportByTemplate(test.pdf, input, tpl);}
通过上述代码我们需要进行指定传递模板内容最终导出效果如下注意事项至此整个教程到这里就结束了。不过还有以下事项需要注意Pdf导出支持全平台包括Windows和Linuxx86以及x64Pdf导出底层基于wkhtmltopdf库的封装已包含wkhtmltopdf各平台的包无需再次安装在Linux容器中Pdf导出需要安装相关字体文件具体见容器教程