diff --git a/EnvelopeGenerator.PdfEditor/Extensions.cs b/EnvelopeGenerator.PdfEditor/Extensions.cs index c6073670..ddae8a4d 100644 --- a/EnvelopeGenerator.PdfEditor/Extensions.cs +++ b/EnvelopeGenerator.PdfEditor/Extensions.cs @@ -1,54 +1,17 @@ -using iText.Kernel.Pdf; -using iText.Kernel.Pdf.Canvas; - -#if NETFRAMEWORK +#if NETFRAMEWORK using System.IO; -using System; #endif namespace EnvelopeGenerator.PdfEditor -#if NET - ; -#elif NETFRAMEWORK { -#endif - public static class Extensions { - #region Edit PDF document - public static TStream Edit(this TStream inputStream, Action edit) - where TStream : Stream, new() - { - using (var outputStream = new TStream()) - { - using (var pdfDoc = new PdfDocument(new PdfReader(inputStream), new PdfWriter(outputStream))) - { - edit(pdfDoc); - } - return outputStream; - } - } - - public static byte[] Edit(this byte[] pdfBytes, Action edit) - { - using (var inputStream = new MemoryStream(pdfBytes)) - { - return inputStream.Edit(edit).ToArray(); - } - } - #endregion - - public static byte[] Design(this byte[] pdfBytes, params (int pageIndex, Action design)[] pageDesign) - => pdfBytes.Edit(doc => - { - foreach((int pageIndex, Action design) in pageDesign) - { - var page = doc.GetPage(pageIndex); - var canvas = new PdfCanvas(page); - design(canvas); - } - }); + /// + /// Writes the stream contents to a byte array, regardless of the System.IO.MemoryStream.Position property. + /// + /// + /// + /// A new byte array + public static byte[] ToBytes(this TPdf pdf) where TPdf : Pdf => pdf.OutputStream.ToArray(); } -#if NETFRAMEWORK -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs b/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs index 950903c8..dab1d096 100644 --- a/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs +++ b/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs @@ -224,7 +224,7 @@ public class EnvelopeController : ViewControllerBase { if (er.Envelope!.Documents?.FirstOrDefault() is DocumentDto doc && doc.ByteData is not null) { - var edit = Pdf.FromMemory(doc.ByteData).Draw(1, canvas => + using var pdf = Pdf.FromMemory(doc.ByteData).Design(1, canvas => { canvas.SetStrokeColor(ColorConstants.RED); canvas.SetFillColor(ColorConstants.CYAN); @@ -234,11 +234,7 @@ public class EnvelopeController : ViewControllerBase canvas.FillStroke(); }); - edit._doc.Close(); - - var foo = Convert.ToBase64String(edit.OutputStream.ToArray()); - doc.ByteData = edit.OutputStream.ToArray(); - + doc.ByteData = pdf.ToBytes(); ViewData["DocumentBytes"] = doc.ByteData; }