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通用打印实现的更多相关文章

  1. 在ASP.NET2.0里打印网页指定的内容(比如打印网页里的一个Table)

    原文:在ASP.NET2.0里打印网页指定的内容(比如打印网页里的一个Table) 打印指定内容: <html> <head> <script   type= " ...

  2. asp.net MVC通用分页组件 使用方便 通用性强

    asp.net MVC通用分页组件 使用方便 通用性强   该分页控件的显示逻辑: 1 当前页面反色突出显示,链接不可点击 2 第一页时首页链接不可点击 3 最后一页时尾页链接不可点击 4 当前页面左 ...

  3. (16)ASP.NET Core 通用主机(HostBuilder)

    1.前言 ASP.NET Core应用程序可以配置和启动主机(Host).主机负责应用程序启动和生命周期管理.通用主机用于无法处理HTTP请求的应用程序.通用主机的用途是将HTTP管道从Web主机AP ...

  4. ASP.NET MVC通用权限管理系统(响应布局)源码更新介绍

    一.asp.net mvc 通用权限管理系统(响应布局)源码主要以下特点: AngelRM(Asp.net MVC)是基于asp.net(C#)MVC+前端bootstrap+ztree+lodash ...

  5. html页面提交JSON,ASP页面接收并打印

    jsonSubmit.html 1)能过 javascript函数驱动请求页 <!DOCTYPE html> <html> <head> <title> ...

  6. Asp.Net Mvc通用后台管理系统,bootstrap+easyui+权限管理+ORM

    产品清单: 1.整站源码,非编译版,方便进行业务的二次开发 2.通用模块与用户等基础数据的数据库脚本 3.bootstrap3.3.1 AceAdmin模板源码 4.easyui1.3.5源码 5.F ...

  7. asp.net lodop单个打印

    1.首先在列表页面增加以下代码 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind=&quo ...

  8. asp.net 实现在线打印功能,jQuery打印插件PrintArea实现自动分页

    使用的组件:jQuery打印插件PrintArea,有兴趣的可以研究一下. 使用方法略过,这里将介绍如何实现打印多页是可以分页. 现在提供两种方法思路: 1.根据特定的打印机型号和使用的纸张类型,然后 ...

  9. Linux下通用打印系统CUPS使用教程

    昨天研究了一下关于在Linux下实现打印操作的相关内容,整理记录如下: 1.什么是CUPS CUPS(Common UNIX Printing System,即通用Unix打印系统)是FedoraCo ...

随机推荐

  1. Etherscan

    转载声明:https://blog.csdn.net/shebao3333/article/details/79858250 (仅方便自己查看及原文章被删除) 什么是Etherscan? 简单来说是一 ...

  2. 修改Mysql 数据库的密码

    1.修改my.cnf 在这个文件里面加入 skip-grant-tables 修改之后,保存.然后重启数据库 2.由于我的系统是Centos7 ,数据库是mariadb ,所以执行命令如下: 3.重启 ...

  3. 《精通并发与Netty》学习笔记(05 - Google Protobuf与Netty的结合)

    protobuf是由Google开发的一套对数据结构进行序列化的方法,可用做通信协议,数据存储格式,等等.其特点是不限语言.不限平台.扩展性强 Netty也提供了对Protobuf的天然支持,我们今天 ...

  4. centos7 的system

    1.vim /etc/systemd/system/alertmanager.service [Unit] Description=Alertmanager After=network-online. ...

  5. day25 多继承、接口、抽象类、鸭子类型

    今日内容: 如何查看对象的名称空间及对象名 继承的另一种使用 单继承与多继承 经典类与新式类 mro列表 菱形继承 接口 抽象类 鸭子类型 1.查看名称空间包含的变量: 使用类或对象名.__dict_ ...

  6. SQL SERVER DATEADD函数

    定义: DATEADD() 函数在日期中加上指定的时间间隔. ※指定的时间间隔可以为负数 语法: DATEADD(datepart,number,date) 参数: ①datepart 参数可以是下列 ...

  7. 利用PLSQL Developer对oracle中的数据进行备份恢复

    --以备份scott用户为例,目标(备份里面所有的对象)--切换到scottconn scott/tiger;--进入  工具-->导出用户对象  如图所示 创建表空间及用户名,并赋予权限 -- ...

  8. css小记:hover 鼠标滑过让该元素的子元素或者其他元素改变样式

    <!DOCTYPE><head><meta http-equiv="Content-Type" content="text/html; ch ...

  9. 使用Iview时候 报:no-parsing-error Parsing error: x-invalid-end-tag 解决办法

    解决办法有两种解决办法: 1.MenuItem修改为:menu-item 2.在根目录下 .eslintrc.js 文件 rules 下添加: "vue/no-parsing-error&q ...

  10. PostgreSQL查看表、表索引、视图、表结构以及参数设置

    -- 表索引select * from pg_indexes where tablename='person_wechat_label';select * from pg_statio_all_ind ...