You might try un-wiring the event handler that you add here when all is said and done:
Code:
pd.PrintPage += new PrintPageEventHandler(PageAdd);
It's possible it is still holding a reference to some memory in code that is not allowing the garbage collector to release it.