Refactored all EnvelopeGenerator.Jobs files to use the EnvelopeGenerator.Jobs namespace instead of EnvelopeGenerator.CommonServices.Jobs. Updated the .csproj to remove custom content and compile includes for the Jobs folder. Switched FinalizeDocumentJob to use dependency injection for PDFBurner, PDFMerger, and ReportCreator. Improved image annotation logic in PDFBurner for better placement and scaling, and refactored form field value rendering for conditional font styling. Aliased Document as LayoutDocument in ReportCreator to avoid ambiguity. Removed the obsolete Class1.cs file and made minor type safety improvements. These changes modernize the codebase and enhance maintainability.
47 lines
1.4 KiB
C#
47 lines
1.4 KiB
C#
using System.IO;
|
|
using iText.Kernel.Pdf;
|
|
using iText.Kernel.Utils;
|
|
using Microsoft.Extensions.Logging;
|
|
using Microsoft.Extensions.Logging.Abstractions;
|
|
using static EnvelopeGenerator.Jobs.FinalizeDocument.FinalizeDocumentExceptions;
|
|
|
|
namespace EnvelopeGenerator.Jobs.FinalizeDocument;
|
|
|
|
public class PDFMerger
|
|
{
|
|
private readonly ILogger<PDFMerger> _logger;
|
|
|
|
public PDFMerger() : this(NullLogger<PDFMerger>.Instance)
|
|
{
|
|
}
|
|
|
|
public PDFMerger(ILogger<PDFMerger> logger)
|
|
{
|
|
_logger = logger;
|
|
}
|
|
|
|
public byte[] MergeDocuments(byte[] document, byte[] report)
|
|
{
|
|
try
|
|
{
|
|
using var finalStream = new MemoryStream();
|
|
using var documentReader = new PdfReader(new MemoryStream(document));
|
|
using var reportReader = new PdfReader(new MemoryStream(report));
|
|
using var writer = new PdfWriter(finalStream);
|
|
using var targetDoc = new PdfDocument(documentReader, writer);
|
|
using var reportDoc = new PdfDocument(reportReader);
|
|
|
|
var merger = new PdfMerger(targetDoc);
|
|
merger.Merge(reportDoc, 1, reportDoc.GetNumberOfPages());
|
|
|
|
targetDoc.Close();
|
|
return finalStream.ToArray();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.LogError(ex, "Failed to merge PDF documents");
|
|
throw new MergeDocumentException("Documents could not be merged", ex);
|
|
}
|
|
}
|
|
}
|