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);