Files
DocumentService/DocumentOperator.Application/Common/Interfaces/IPdfProcessor.cs
TekH 73a7afe257 refactor: Change IPdfProcessor interface from byte[] to Stream
- ValidateAsync(byte[]) → ValidateAsync(Stream)
- ValidatePdfAAsync(byte[]) → ValidatePdfAAsync(Stream)
- CheckAttachmentsAsync(byte[]) → CheckAttachmentsAsync(Stream)
- Reason: Stream-based processing reduces memory footprint and enables pipeline parallelization
2026-07-20 11:55:08 +02:00

36 lines
1.6 KiB
C#

using DocumentOperator.Application.Common.DTOs;
namespace DocumentOperator.Application.Common.Interfaces;
public interface IPdfProcessor
{
/// <summary>
/// Validates a PDF and extracts metadata.
/// </summary>
/// <param name="pdfStream">PDF content as stream (caller is responsible for disposal)</param>
/// <returns>PDF metadata (page count, size, version, attachments)</returns>
/// <exception cref="Domain.Common.Exceptions.BadRequestException">
/// Thrown when stream is empty or invalid
/// </exception>
Task<PdfMetadata> ValidateAsync(Stream pdfStream);
/// <summary>
/// Validates a PDF/A document and checks conformance level.
/// </summary>
/// <param name="pdfStream">PDF content as stream (caller is responsible for disposal)</param>
/// <returns>PDF/A metadata including conformance level and validation errors/warnings</returns>
/// <exception cref="Domain.Common.Exceptions.BadRequestException">
/// Thrown when stream is empty or invalid
/// </exception>
Task<PdfAMetadata> ValidatePdfAAsync(Stream pdfStream);
/// <summary>
/// Checks for embedded files (attachments) in a PDF document and returns detailed metadata.
/// </summary>
/// <param name="pdfStream">PDF content as stream (caller is responsible for disposal)</param>
/// <returns>Attachment information (count, file names, MIME types, sizes)</returns>
/// <exception cref="Domain.Common.Exceptions.BadRequestException">
/// Thrown when stream is empty or invalid
/// </exception>
Task<AttachmentInfo> CheckAttachmentsAsync(Stream pdfStream);
}