// Recommended: aggregate handlers via WithEvents at the early stage (before Load).FluentConverter.WithEvents(e=>{e.OnDocumentConverted=ctx=>Console.WriteLine($"Done: {ctx.SourceFileName}");e.OnDocumentFailed=(ctx,ex)=>Console.Error.WriteLine(ex.Message);}).Load("input.docx").ConvertTo("output.pdf").WithOptions(newPdfConvertOptions()).Convert();
// Per-page mirror: per-page handlers via WithEvents at the early stage.FluentConverter.WithEvents(e=>{e.OnPageConverted=ctx=>Console.WriteLine($"page {ctx.Page} done");e.OnPageFailed=(ctx,ex)=>Console.Error.WriteLine($"page {ctx.Page}: {ex.Message}");}).Load("input.pdf").ConvertByPageTo(ctx=>newFileStream($"page-{ctx.Page}.png",FileMode.Create)).WithOptions(newImageConvertOptions{Format=ImageFileType.Png}).Convert();
// Legacy chain still compiles unchanged (now backed by the obsolete staged interfaces):FluentConverter.WithSettings(()=>newConverterSettings()).Load("").WithOptions(newPdfLoadOptions()).ConvertTo("").WithOptions(newPdfConvertOptions()).OnConversionCompleted(convertedDocumentStream=>{}).Convert();