From 73d613ea0549879555ce199460c5a54e99917ae6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?old=E6=98=93?= <156663459@qq.com> Date: Wed, 3 Jul 2024 16:31:54 +0800 Subject: [PATCH] =?UTF-8?q?feat:pdf=E4=B8=8B=E8=BD=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Front/PcVolunteerController.cs | 2 +- PdfOpt/PdfOptHelper.cs | 29 ++++++++++++------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/New_College.Api/Controllers/Front/PcVolunteerController.cs b/New_College.Api/Controllers/Front/PcVolunteerController.cs index 8f343af..f6f61ab 100644 --- a/New_College.Api/Controllers/Front/PcVolunteerController.cs +++ b/New_College.Api/Controllers/Front/PcVolunteerController.cs @@ -319,7 +319,7 @@ namespace New_College.Api.Controllers.Front }); - var stream = PdfOptHelper.CreatePdf(string.Format("{0}-{1}-{2}", query.VolunteerTableName, query.SubjectClaim, query.Score), unversityheaders.ToList(), majorlistheaders.ToList(), ulist, query.CreateTime.Value); + var stream =await PdfOptHelper.CreatePdfAsync(string.Format("{0}-{1}-{2}", query.VolunteerTableName, query.SubjectClaim, query.Score), unversityheaders.ToList(), majorlistheaders.ToList(), ulist, query.CreateTime.Value); // 返回 PDF 文件 return File(stream.ToArray(), "application/pdf", string.Format("{0}.pdf", DateTime.Now.ToString("yyyyMMddhhssfff_"))); diff --git a/PdfOpt/PdfOptHelper.cs b/PdfOpt/PdfOptHelper.cs index 10bb72d..90829e0 100644 --- a/PdfOpt/PdfOptHelper.cs +++ b/PdfOpt/PdfOptHelper.cs @@ -24,7 +24,7 @@ namespace PDFGenerateApi /// /// /// - public static MemoryStream CreatePdf(string pagetitle, List headers, List majors, List dataModels,DateTime dtnow) + public static async Task CreatePdfAsync(string pagetitle, List headers, List majors, List dataModels, DateTime dtnow) { // 创建内存流 using (var stream = new MemoryStream()) @@ -59,19 +59,26 @@ namespace PDFGenerateApi // 添加标题下方内容 Paragraph subtitle = CreateSubTitle(font, string.Format("最后修改时间:{0}", dtnow.ToString("yyyy-MM-dd HH:mm"))); document.Add(subtitle); - dataModels.ForEach(a => + + + // 创建并行任务队列 + List tasks = new List(); + Parallel.For(0, dataModels.Count(), tableIndex => { - Table universitytable = HeaderTable(font, 9, headers, new List() { a }); - universitytable.SetMarginTop(20); - document.Add(universitytable); - Table majortable = MajorTable(font, 9, majors, a.majorModels); - document.Add(majortable); - // 手动分页并添加新的表格,不带表头 - // document.Add(new AreaBreak(AreaBreakType.NEXT_PAGE)); + lock (document) + { + Table universitytable = HeaderTable(font, 9, headers, new List() { dataModels[tableIndex] }); + universitytable.SetMarginTop(20); + document.Add(universitytable); + Table majortable = MajorTable(font, 9, majors, dataModels[tableIndex].majorModels); + document.Add(majortable); + // 添加空白段落以增加表格间的间距 + document.Add(new Paragraph("\n")); + } }); - //专业 - + // 等待所有并行任务完成 + await Task.WhenAll(tasks); // 关闭文档 document.Close(); // 返回 PDF 文件