From 1f5468b1ac54f8989cf5e396ee5ea395e3da7df6 Mon Sep 17 00:00:00 2001 From: TekH Date: Tue, 10 Mar 2026 04:07:37 +0100 Subject: [PATCH] Refactor PDF canvas transform to use Save/Restore state Move Y-axis flip transform inside signature drawing block and wrap with SaveState/RestoreState to prevent side effects on other drawing operations and pages. Removes redundant page-level transformation for better encapsulation. --- EnvelopeGenerator.PdfEditor/Pdf.cs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/EnvelopeGenerator.PdfEditor/Pdf.cs b/EnvelopeGenerator.PdfEditor/Pdf.cs index 03b629f0..22011f72 100644 --- a/EnvelopeGenerator.PdfEditor/Pdf.cs +++ b/EnvelopeGenerator.PdfEditor/Pdf.cs @@ -105,17 +105,13 @@ namespace EnvelopeGenerator.PdfEditor public Pdf Background(IEnumerable signatures, double widthPx = 1.9500000000000002, double heightPx = 2.52) where TSignature : ISignature { - // once per page - Page(page => - { - var canvas = new PdfCanvas(page); - canvas.ConcatMatrix(1, 0, 0, -1, 0, page.GetPageSize().GetHeight()); - }); - foreach (var signature in signatures) Page(signature.Page, page => { var canvas = new PdfCanvas(page); + canvas.SaveState(); + canvas.ConcatMatrix(1, 0, 0, -1, 0, page.GetPageSize().GetHeight()); + double inchFactor = 72; double magin = .2; double x = (signature.X - .7 - magin) * inchFactor; @@ -134,6 +130,8 @@ namespace EnvelopeGenerator.PdfEditor canvas.SetFillColor(new DeviceRgb(204, 202, 198)) .Rectangle(x, y + height - bottomLineLength, width, bottomLineLength) .Fill(); + + canvas.RestoreState(); }); return this;