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()]
public string AppServiceName { get; set; } /// <summary>
/// 模板名称
/// </summary>
[StringLength()]
public string TemplateName { get; set; } /// <summary>
/// 默认模板
/// </summary>
public bool Defaule { get; set; } /// <summary>
/// 模板内容
/// </summary>
public string TemplateContent { get; set; } /// <summary>
/// 备注
/// </summary>
[StringLength()]
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 Zero通用打印实现的更多相关文章
- 在ASP.NET2.0里打印网页指定的内容(比如打印网页里的一个Table)
原文:在ASP.NET2.0里打印网页指定的内容(比如打印网页里的一个Table) 打印指定内容: <html> <head> <script type= " ...
- asp.net MVC通用分页组件 使用方便 通用性强
asp.net MVC通用分页组件 使用方便 通用性强 该分页控件的显示逻辑: 1 当前页面反色突出显示,链接不可点击 2 第一页时首页链接不可点击 3 最后一页时尾页链接不可点击 4 当前页面左 ...
- (16)ASP.NET Core 通用主机(HostBuilder)
1.前言 ASP.NET Core应用程序可以配置和启动主机(Host).主机负责应用程序启动和生命周期管理.通用主机用于无法处理HTTP请求的应用程序.通用主机的用途是将HTTP管道从Web主机AP ...
- ASP.NET MVC通用权限管理系统(响应布局)源码更新介绍
一.asp.net mvc 通用权限管理系统(响应布局)源码主要以下特点: AngelRM(Asp.net MVC)是基于asp.net(C#)MVC+前端bootstrap+ztree+lodash ...
- html页面提交JSON,ASP页面接收并打印
jsonSubmit.html 1)能过 javascript函数驱动请求页 <!DOCTYPE html> <html> <head> <title> ...
- Asp.Net Mvc通用后台管理系统,bootstrap+easyui+权限管理+ORM
产品清单: 1.整站源码,非编译版,方便进行业务的二次开发 2.通用模块与用户等基础数据的数据库脚本 3.bootstrap3.3.1 AceAdmin模板源码 4.easyui1.3.5源码 5.F ...
- asp.net lodop单个打印
1.首先在列表页面增加以下代码 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind=&quo ...
- asp.net 实现在线打印功能,jQuery打印插件PrintArea实现自动分页
使用的组件:jQuery打印插件PrintArea,有兴趣的可以研究一下. 使用方法略过,这里将介绍如何实现打印多页是可以分页. 现在提供两种方法思路: 1.根据特定的打印机型号和使用的纸张类型,然后 ...
- Linux下通用打印系统CUPS使用教程
昨天研究了一下关于在Linux下实现打印操作的相关内容,整理记录如下: 1.什么是CUPS CUPS(Common UNIX Printing System,即通用Unix打印系统)是FedoraCo ...
随机推荐
- 在java中有关于反射的皮毛----自己的简略认知
白首为功名.旧山松竹老,阻归程.欲将心事付瑶琴.知音少,弦断有谁听? 反射(reflection): 当我们在看到这个名词首先会想到的是,我们在上高中时学的物理,那么在java开发中,反射这个名词是怎 ...
- 欢迎关注微信公众号codefans一起交流技术
- Email功能的设定
在前期制定发送邮件功能时,都是使用导入import smtplib模块来实现,虽说能实现, 但是对新人.刚接触的来说不太友好,虽然网上五花八门的教程一大推,但还是要自己花不少时间才搞定(笔者就是) 在 ...
- (转)window.XMLHttpRequest详解(AJAX工作原理)
转自:http://l.xbest.blog.163.com/blog/static/8640444120100225516963/?fromdm&fromSearch&isFromS ...
- idea连接docker实现一键部署
一.修改配置文件,打开2375端口 [root@microservice ~]# vim /usr/lib/systemd/system/docker.service 在ExecStart=/usr/ ...
- poj1905 Expanding Rods(二分)
题目链接:https://vjudge.net/problem/POJ-1905 题意:有一根长len的木棍,加热了n度,长度会膨胀为len*(1+n*c),c为膨胀系数.现在把这根木棍夹在两堵墙之间 ...
- uboot传递参数'console=ttyXXX'的作用
转载于:http://blog.csdn.net/jgdu1981/article/details/8643057 linux启动时uboot传递进console=ttyS0,115200n8的参数 ...
- Postfix to Infix
Infix expression: The expression of the form a op b. When an operator is in-between every pair of op ...
- Spring MVCD框架中调用HanLP分词的方法
项目简要:关于java web的一个项目,用的Spring MVCd 框架.鉴于参与此次项目的人中并不是所人都做的Spring,为了能够提高效率,建议大家是先抛开SPring来写自己负责的模块,最后再 ...
- interface和struct
interface: C++关键字中没有interface,即接口.interface和class不同,interface仅有接口声明,而且所有声明默认的访问权限是public而非private. C ...