From 5b30465126e41925a46e51090d08ed3dcd4c1171 Mon Sep 17 00:00:00 2001 From: TekH Date: Wed, 12 Nov 2025 13:59:35 +0100 Subject: [PATCH] refactor(pdf): simplify and inline PDF merge logic in PdfMergeBehavior - Removed MergeDocuments static method; integrated merge process directly in Handle() - Added null check for request.Report before merging - Cleaned up redundant return and improved flow for memory stream handling - Added DevExpress.XtraReports using directive - Clarified comment and exception messages for PDF loading and merging --- .../Pdf/Behaviors/PdfMergeBehavior.cs | 32 +++++++------------ 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/EnvelopeGenerator.Application/Pdf/Behaviors/PdfMergeBehavior.cs b/EnvelopeGenerator.Application/Pdf/Behaviors/PdfMergeBehavior.cs index a9a2b86b..616c13c6 100644 --- a/EnvelopeGenerator.Application/Pdf/Behaviors/PdfMergeBehavior.cs +++ b/EnvelopeGenerator.Application/Pdf/Behaviors/PdfMergeBehavior.cs @@ -1,4 +1,5 @@ #if WINDOWS +using DevExpress.XtraReports; using EnvelopeGenerator.Application.Common.Extensions; using EnvelopeGenerator.Application.Exceptions; using EnvelopeGenerator.Domain.Constants; @@ -24,28 +25,13 @@ public class PdfMergeBehavior : IPipelineBehavior { var doc = await next(cancel); - doc = request.Report is byte[] report - ? MergeDocuments(doc, report) - : throw new InvalidOperationException("The final document report could not be merged." + + if (request.Report is null) + throw new InvalidOperationException("The final document report could not be merged." + "There may be an error related to the behavior register order." + "Request details:\n" + request.ToJson(Format.Json.ForDiagnostics)); - string base64String = Convert.ToBase64String(doc); - - return doc; - } - - /// - /// - /// - /// - /// - /// - /// - public static byte[] MergeDocuments(byte[] pDocument, byte[] pReport) - { - using var oDocumentStream = new MemoryStream(pDocument); - using var oReportStream = new MemoryStream(pReport); + using var oDocumentStream = new MemoryStream(doc); + using var oReportStream = new MemoryStream(request.Report); using var oFinalStream = new MemoryStream(); using var oDocumentPDF = new GdPicturePDF(); using var oReportPDF = new GdPicturePDF(); @@ -70,13 +56,17 @@ public class PdfMergeBehavior : IPipelineBehavior if (oStatus != GdPictureStatus.OK) throw new MergeDocumentException($"Documents could not be merged: {oStatus}"); - // Convert to PDF/A + // Convert to byte oMergedPDF.SaveToStream(oFinalStream); oStatus = oDocumentPDF.GetStat(); if (oStatus != GdPictureStatus.OK) throw new MergeDocumentException($"Document could not be converted to PDF/A: {oStatus}"); - return oFinalStream.ToArray(); + doc = oFinalStream.ToArray(); + + string base64String = Convert.ToBase64String(doc); + + return doc; } } #endif \ No newline at end of file