feat: Add IPdfProcessor.MergePdfsAsync interface
- Add MergePdfsAsync method to IPdfProcessor interface - Parameters: IReadOnlyList<Stream> pdfStreams, IReadOnlyList<string?>? pageRanges - Returns: Task<byte[]> (merged PDF) - Validates: Minimum 2 PDFs, stream Position = 0, page ranges count matches PDF count - Supports optional page ranges (e.g., '1-3,5' or null for all pages)
This commit is contained in:
@@ -58,4 +58,22 @@ public interface IPdfProcessor
|
||||
/// Thrown when PDF contains no attachments
|
||||
/// </exception>
|
||||
Task<byte[]> ExtractAttachmentsAsync(Stream pdfStream);
|
||||
|
||||
/// <summary>
|
||||
/// Merges multiple PDF documents into a single PDF.
|
||||
/// </summary>
|
||||
/// <param name="pdfStreams">
|
||||
/// PDF streams to merge (minimum 2 required). Each stream must be readable and positioned
|
||||
/// at the beginning (Position = 0). Caller is responsible for disposal.
|
||||
/// </param>
|
||||
/// <param name="pageRanges">
|
||||
/// Optional page ranges per PDF (null = all pages). Format: "1-3,5" means pages 1, 2, 3, and 5.
|
||||
/// If null or empty for a PDF, all pages are included. Array length must match pdfStreams length if provided.
|
||||
/// </param>
|
||||
/// <returns>Merged PDF as byte array</returns>
|
||||
/// <exception cref="Domain.Common.Exceptions.BadRequestException">
|
||||
/// Thrown when fewer than 2 PDFs provided, any stream is empty/invalid/not at Position=0,
|
||||
/// or page range format is invalid
|
||||
/// </exception>
|
||||
Task<byte[]> MergePdfsAsync(IReadOnlyList<Stream> pdfStreams, IReadOnlyList<string?>? pageRanges = null);
|
||||
}
|
||||
Reference in New Issue
Block a user