```csharp title="C#" using Kreuzberg; var enricher = new PdfMetadataEnricher(); PostProcessorRegistry.Register(enricher); public class PdfMetadataEnricher : IPostProcessor { private int _processedCount = 0; public string Name => "pdf-metadata-enricher"; public string Version => "1.0.0"; public void Initialize() { Console.WriteLine("PDF metadata enricher initialized"); _processedCount = 0; } public void Shutdown() { Console.WriteLine($"PDF metadata enricher processed {_processedCount} documents"); } public void Process(ExtractionResult result, ExtractionConfig config) { if (result.MimeType == "application/pdf") { _processedCount++; if (result.Metadata == null) { result.Metadata = new Metadata(); } result.Metadata.Author = result.Metadata.Author ?? "Unknown"; } } public ProcessingStage ProcessingStage() { return ProcessingStage.Early; } public bool ShouldProcess(ExtractionResult result, ExtractionConfig config) { return result.MimeType == "application/pdf"; } public ulong EstimatedDurationMs(ExtractionResult result) { return 50; } public int Priority() { return 50; } } ```