Asp.Net Zero通用打印实现
Asp.Net Zero是一款非常优秀的web框架,可以用来快速构建业务系统。框架满足了业务系统所需的大部分通用功能,但是系统必须的打印报表功能一直没有实现。下面给大家介绍如何在zero中集成打印功能,可实现模板设计、套打、批量打印、指令打印、条码/二维码打印等等。 首先需要设计一套灵活用于系统的打印业务,业务设计如下: 首先在core层中新增Prints文件夹,prints中新建PrintTemplate public class PrintTemplate : Entity<int>,ISoftDelete,IMustHaveTenant { public int TenantId { get; set; } public bool IsDeleted { get; set; } /// <summary> /// 模块 /// </summary> [StringLength(50)] public string AppServiceName { get; set; } /// <summary> /// 模板名称 /// </summary> [StringLength(50)] public string TemplateName { get; set; } /// <summary> /// 默认模板 /// </summary> public bool Defaule { get; set; } /// <summary> /// 模板内容 /// </summary> public string TemplateContent { get; set; } /// <summary> /// 备注 /// </summary> [StringLength(100)] public string Remark { get; set; } } PrintTemplate创建后,添加IPrintTemplateManager领域服务方便接口调用: public interface IPrintTemplateManager: IDomainService { Task<List<string>> GetTemplates(string serviceName); Task<string> Print(string serviceName,string name); } ?Print是选择打印模板后获取模板内容,这里可以单次直接获取模板列表和内容,但是可能业务发展后,打印模板会有很多,所以分步获取更加高效。 ?GetTemplates是获取当前模块打印列表,只有模板名称没有内容。 ?数据库迁移后在Application.Shared层中添加IPrintManagerAppService接口 public interface IPrintManagerAppService: IApplicationService { Task CreateOrUpdatePrint(CreateOrEditPrintInput input); Task DeletePrint(EntityDto<int> input); Task<PagedResultDto<CreateOrEditPrintInput>> GetPrints(GetPrintInput input); } ?打印模板是根据业务模块,也就是abp的应用服务进行分类,在报表页面需要获取当前模块所有打印模板列表: result.PrintTemplates = await _printTemplateManager.GetTemplates("SomeoneAppService"); 选择打印模板后获取模板内容并打印: public async Task<string> Print(string templateName) { return await _printTemplateManager.Print("PurchaseManagerAppService",templateName); } 接口实现发布后,在angular中新增打印管理模块,用于统一管理模板,该模块应该由开发人员进行维护。 模板设计如下,可以根据需求设计其他样式模板: ?总结:到这里打印业务已经实现,最后需要在angular中集成打印控件才能开始打印。 ?打印控件实现方式:https://www.cnblogs.com/william-xu/p/11098562.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – ASP.NET MVC 3发布日期?
- asp.net-mvc – 如何在ASP.NET MVC模型中获取当前用户
- ASP.Net:动态添加到占位符的用户控件无法检索值
- asp.net-mvc – 使用Visual Studio 2013 Preview调试ASP.NE
- asp.net-core – 当视图位于Views文件夹之外时,标记帮助程序
- asp.net-mvc – Visual Studio 2010是否支持MVC 5?
- asp.net-mvc – ASP.NET MVC:返回FileResult时如何设置编码
- asp.net-mvc-3 – MVC EditorFor命名模板的问题
- ASP.NET Core 2.0中Razor页面禁用防伪令牌验证
- 使用可靠的WPF / .NET背景学习ASP.NET MVC
- asp.net-mvc – Umbraco Surface Controller或Re
- asp.net-mvc-3 – ASP.NET MVC如何使用pingfeder
- asp.net – AspNetSession布局渲染器不工作
- ASP.NET页面之间传值的方式之Application实例详解
- asp.net-mvc – Asp.net MVC 3验证在TryUpdateMo
- asp.net阻止表单提交两次
- 防止为ASP.NET服务器控件打包标签
- asp.net-mvc-3 – 在MVC应用程序中将配置设置注入
- asp.net-core – 如何使用TeamCity使用WebDeploy
- asp.net – 无法访问已关闭的文件