diff --git a/EnvelopeGenerator.PdfEditor/Pdf.cs b/EnvelopeGenerator.PdfEditor/Pdf.cs index 6886f0b7..5c218500 100644 --- a/EnvelopeGenerator.PdfEditor/Pdf.cs +++ b/EnvelopeGenerator.PdfEditor/Pdf.cs @@ -6,6 +6,7 @@ using iText.Kernel.Geom; #if NETFRAMEWORK using System; using System.IO; +using System.Linq; using System.Threading.Tasks; using System.Collections.Generic; #endif @@ -82,6 +83,16 @@ namespace EnvelopeGenerator.PdfEditor public Pdf Background(IEnumerable signatures) where TSignature : ISignature { + // once per page + var pageIndexes = signatures.Select(signature => signature.Page).Distinct().OrderBy(index => index); + foreach(var pageIndex in pageIndexes) + { + var page = _doc.GetPage(pageIndex); + Rectangle pageSize = page.GetPageSize(); + var canvas = new PdfCanvas(page); + canvas.ConcatMatrix(1, 0, 0, -1, 0, pageSize.GetHeight()); + } + foreach (var signature in signatures) Page(signature.Page, page => { @@ -95,10 +106,6 @@ namespace EnvelopeGenerator.PdfEditor double bottomLineLength = 2.5; - Rectangle pageSize = page.GetPageSize(); - - canvas.ConcatMatrix(1, 0, 0, -1, 0, pageSize.GetHeight()); - // draw background canvas.SetFillColor(new DeviceRgb(222, 220, 215)) .Rectangle(x, y, width, height)