namespace DigitalData.EmailProfiler.Application.Interfaces.Services; /// /// PDF processing service interface for validation and embedded file extraction. /// public interface IPdfProcessingService { /// /// Validate if file is a valid PDF. /// Task IsValidPdfAsync(string filePath, CancellationToken cancellationToken = default); /// /// Validate if stream contains a valid PDF. /// Task IsValidPdfAsync(Stream stream, CancellationToken cancellationToken = default); /// /// Extract embedded files from PDF (e.g., ZUGFeRD XML). /// Task> ExtractEmbeddedFilesAsync(string pdfPath, CancellationToken cancellationToken = default); /// /// Extract embedded files from PDF stream. /// Task> ExtractEmbeddedFilesAsync(Stream pdfStream, CancellationToken cancellationToken = default); /// /// Check if PDF contains ZUGFeRD data. /// Task HasZugFeRDDataAsync(string pdfPath, CancellationToken cancellationToken = default); /// /// Extract ZUGFeRD XML from PDF. /// Task ExtractZugFeRDXmlAsync(string pdfPath, CancellationToken cancellationToken = default); /// /// Get PDF metadata (title, author, creation date, etc.). /// Task GetMetadataAsync(string pdfPath, CancellationToken cancellationToken = default); } /// /// Represents an embedded file extracted from a PDF. /// public record EmbeddedFile(string FileName, byte[] Content, string? Description = null); /// /// Represents PDF metadata. /// public record PdfMetadata( string? Title, string? Author, string? Subject, string? Keywords, DateTime? CreationDate, DateTime? ModificationDate, int PageCount);