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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM