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. A simple dynamic library implemented in C# 4.0 to deal with XML structure

    https://github.com/cardinals/XmlToObjectParser A simple dynamic library implemented in C# 4.0 to dea ...

  2. 树莓派(Linux)添加USB外接硬盘

    1.显示系统的硬盘设备以及分区 sudo fdisk -l 显示设备名,例如/dev/sda1 2.树莓派默认不支持NTFS文件系统,如果需要支持则要安装相应的软件包 sudo apt-get ins ...

  3. v-model语法糖在组件中的使用

    原文地址 v-model 主要是用于表单上数据的双向绑定 一:基本 1:主要用于 input,select,textarea,component 2:修饰符: .lazy- 取代input监听chan ...

  4. JSX AS DSL? 写个 Mock API 服务器看看

    这几天打算写一个简单的 API Mock 服务器,老生常谈哈?其实我是想讲 JSX, Mock 服务器只是一个幌子. 我在寻找一种更简洁.方便.同时又可以灵活扩展的.和别人不太一样的方式,来定义各种 ...

  5. python-linux-集群nginx

    一命令基本格式 ----cd ~ 家 ----cd / 根 ---cd ..  上级 ----pwd  当前路径 ----ls -l   -a  -h ----权限rwxrwxrwx  755 二文件 ...

  6. ambari 快速安装部署

    OS:Linux CPU消耗大,要准备5G以上,不然集群启动不了(我自己给它配了8G,启动整个集群是没问题,要用的话估计不够) 一.准备工作: 1.关闭防火墙:sudo ufw disable/ 2. ...

  7. 【miscellaneous】多播(组播)原理分析

    为什么要使用多播:        网卡从网络上接收到目标物理地址对应的所有bit位都为1的数据报时,会收到这条消息并将其上传给驱动程序,网卡的这种工作模式称为广播模式,网卡的缺省工作模式包含直接模式和 ...

  8. 使用TensorFlow训练SSD(二):数据的准备

    在进行模型的训练之前,需要准备好相关的数据,相关的数据还需要进行标注.这篇博客将使用labelImg标注工具来进行数据的处理. 首先可从https://github.com/tzutalin/labe ...

  9. C# PC版微信消息监听自动回复

    最近有个微商客户需要搞个 个人微信监听群消息关键字并实现自动回复功能, 因为他有很多群  很多买家咨询的话 一个个回复太麻烦, 客户要求 比如群里有人发 关键字 产品1  则自动回复产品1的相关描述 ...

  10. Redis(1.6)Redis发布订阅

    [0]发布订阅架构图    客户端订阅某个频道,让后有人在频道上发布信息,频道就分发给所有的客户端. 举个例子:就和微信公众号一样,文章作者者把文章发到微信公众号上,微信公众号平台把文章推送到所有的订 ...