using DocumentService.Application.Common.DTOs; using DocumentService.Application.Common.Interfaces; using MediatR; namespace DocumentService.Application.SignPdf; public sealed record SignPdfCommand : IRequest { public required Stream InputPdf { get; init; } public required PdfSignOptionsDto Options { get; init; } public Stream? SignatureImage { get; init; } } public sealed class SignPdfCommandHandler(IPdfDigitalSignatureService signer) : IRequestHandler { public async Task Handle(SignPdfCommand command, CancellationToken cancellationToken) { using var output = new MemoryStream(); await signer.SignPdfAsync(command.InputPdf, output, command.Options, command.SignatureImage, cancellationToken); return output.ToArray(); } }