using DocumentOperator.Application.Common.DTOs; namespace DocumentOperator.Application.Common.Interfaces; public interface IPdfProcessor { /// /// Validates a PDF and extracts metadata. /// /// /// PDF document stream. Must be readable and positioned at the beginning (Position = 0). /// Non-seekable streams are supported. Caller is responsible for disposal. /// /// PDF metadata (page count, size, version, attachments) /// /// Thrown when stream is empty, invalid, or not positioned at the beginning /// Task ValidateAsync(Stream pdfStream); /// /// Validates a PDF/A document and checks conformance level. /// /// /// PDF document stream. Must be readable and positioned at the beginning (Position = 0). /// Non-seekable streams are supported. Caller is responsible for disposal. /// /// PDF/A metadata including conformance level and validation errors/warnings /// /// Thrown when stream is empty, invalid, or not positioned at the beginning /// Task ValidatePdfAAsync(Stream pdfStream); /// /// Checks for embedded files (attachments) in a PDF document and returns detailed metadata. /// /// /// PDF document stream. Must be readable and positioned at the beginning (Position = 0). /// Non-seekable streams are supported. Caller is responsible for disposal. /// /// Attachment information (count, file names, MIME types, sizes) /// /// Thrown when stream is empty, invalid, or not positioned at the beginning /// Task CheckAttachmentsAsync(Stream pdfStream); }