diff --git a/server/MiAssessment/src/MiAssessment.Core/Services/PdfGenerationService.cs b/server/MiAssessment/src/MiAssessment.Core/Services/PdfGenerationService.cs index 995d822..7d69b2f 100644 --- a/server/MiAssessment/src/MiAssessment.Core/Services/PdfGenerationService.cs +++ b/server/MiAssessment/src/MiAssessment.Core/Services/PdfGenerationService.cs @@ -409,17 +409,27 @@ public class PdfGenerationService : IPdfGenerationService private static void BuildAndSavePdf(List images, string filePath) { using var document = new PdfDocument(); + var totalPages = images.Count; + var font = new XFont("Arial", 10, XFontStyleEx.Regular); + var brush = new XSolidBrush(XColor.FromArgb(153, 153, 153)); // #999999 - foreach (var imageBytes in images) + for (var i = 0; i < totalPages; i++) { + var imageBytes = images[i]; var page = document.AddPage(); page.Width = XUnit.FromPoint(PageWidthPt); page.Height = XUnit.FromPoint(PageHeightPt); - using var stream = new MemoryStream(imageBytes); using var xImage = XImage.FromStream(() => new MemoryStream(imageBytes)); using var gfx = XGraphics.FromPdfPage(page); gfx.DrawImage(xImage, 0, 0, page.Width, page.Height); + + // 绘制页码(底部居中) + var pageNumber = $"{i + 1} / {totalPages}"; + var size = gfx.MeasureString(pageNumber, font); + var x = (page.Width - size.Width) / 2; + var y = page.Height - 20; // 距底部 20pt + gfx.DrawString(pageNumber, font, brush, x, y); } document.Save(filePath);