From ac29fac88dbfa44157b204e6bc54cae7ed5c203c Mon Sep 17 00:00:00 2001 From: TekH Date: Wed, 24 Sep 2025 17:49:15 +0200 Subject: [PATCH] add OutputStream getter --- EnvelopeGenerator.PdfEditor/Edit.cs | 28 +++++++++++++++++++ .../Controllers/EnvelopeController.cs | 22 +++++---------- 2 files changed, 35 insertions(+), 15 deletions(-) diff --git a/EnvelopeGenerator.PdfEditor/Edit.cs b/EnvelopeGenerator.PdfEditor/Edit.cs index 725ac80a..a974afc1 100644 --- a/EnvelopeGenerator.PdfEditor/Edit.cs +++ b/EnvelopeGenerator.PdfEditor/Edit.cs @@ -7,6 +7,14 @@ using System.Threading.Tasks; namespace EnvelopeGenerator.PdfEditor { + public static class Edit + { + public static Edit FromMemory(byte[] documentBytes) + { + return new Edit(new MemoryStream(documentBytes), new MemoryStream()); + } + } + public class Edit : IDisposable, IAsyncDisposable where TInputStream : Stream where TOutputStream : Stream @@ -26,6 +34,26 @@ namespace EnvelopeGenerator.PdfEditor _doc = new PdfDocument(_reader, _writer); } + /// + /// Gets the output stream containing the edited PDF document. + /// + /// + /// Accessing this property will close the underlying to ensure + /// all changes are flushed to the stream. After accessing this property, the PDF document + /// can no longer be modified using this instance. + /// + /// + /// The instance that contains the updated PDF bytes. + /// + public TOutputStream OutputStream + { + get + { + _doc.Close(); + return _outputStream; + } + } + public static Edit OnByte(byte[] documentBytes) { return new Edit(new MemoryStream(documentBytes), new MemoryStream()); diff --git a/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs b/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs index 41b6d6ed..c3537f81 100644 --- a/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs +++ b/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs @@ -208,7 +208,7 @@ public class EnvelopeController : ViewControllerBase //add PSPDFKit licence key ViewData["PSPDFKitLicenseKey"] = _configuration["PSPDFKitLicenseKey"]; - return View("ShowEnvelope", er); + return await CreateShowEnvelopeView(er); } else { @@ -224,10 +224,8 @@ public class EnvelopeController : ViewControllerBase { if (er.Envelope!.Documents?.FirstOrDefault() is DocumentDto doc && doc.ByteData is not null) { - doc.ByteData = doc.ByteData.Edit(doc => + var edit = Edit.FromMemory(doc.ByteData).Draw(1, canvas => { - var page = doc.GetFirstPage(); - var canvas = new PdfCanvas(page); canvas.SetStrokeColor(ColorConstants.RED); canvas.SetFillColor(ColorConstants.CYAN); canvas.SetFillColorRgb(222, 220, 215); @@ -236,17 +234,11 @@ public class EnvelopeController : ViewControllerBase canvas.FillStroke(); }); - doc.ByteData = doc.ByteData.Edit(doc => - { - var page = doc.GetFirstPage(); - var canvas = new PdfCanvas(page); - canvas.SetStrokeColor(ColorConstants.RED); - canvas.SetFillColor(ColorConstants.CYAN); - canvas.SetFillColorRgb(222, 220, 215); - canvas.SetLineWidth(2); - canvas.Rectangle(100, 500, 200, 100); - canvas.FillStroke(); - }); + edit._doc.Close(); + + var foo = Convert.ToBase64String(edit.OutputStream.ToArray()); + doc.ByteData = edit.OutputStream.ToArray(); + ViewData["DocumentBytes"] = doc.ByteData; }