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 文件