Mica ho capito cosa intendi...
L'header e il footer vengono definiti sul singolo report. Nelle ultime versioni ho aggiunto la possibilità di gestire questo attraverso due eventi, appunto Header() e Footer(). Se utilizzi questo approccio, non devi far altro che dare una label ad ogni oggetto pdf che crei, e poi gestisci i due eventi che, in questo caso possono essere diversi, oppure decodificati tramite LAST. Con LAST riesci a capire qual'è l'oggetto che ha chiamato l'evento, e agisci di conseguenza.
Di solito, però, e a meno che non tu non abbia esigenze particolari, i report vengono definiti in un'unica procedura (o form) e, di solito le intestazioni vengono impostate in modo uguale per tutti i report. Questo, ovviamente, a meno di esigenze particolari.
Non sò come funziona la tua applicazione, per cui non sò se crei report completamente differenti, ovvero se cambi tutto il formato in base a determinati requisiti...
Un'altra cosa: nell'ultima versione, visto che ho gestito l'header e il footer tramite eventi, non è necessario creare classi derivate da PdfWriter. Puoi semplicemente creare l'oggetto in una form (ad esempio), e poi gestirne solo gli eventi.