Hai già usato MeasureString per misurare le dimensione di tutto il testo. Quindi non vedo il problema. Basta che controlli se la somma di tutte le altezze è minore di e.PageBounds.Height.
Detto questo, scrivere una classe DocumentPage è poco pratico perché a priori non sai cosa ci andrà dentro quella pagina: arrivi a scoprirlo solo dopo che sei arrivato alla fine della stampa. Sarebbe meglio una classe che si occupi generalmente di stampare tutti i dati, senza preoccuparsi di quante pagine ci saranno.

P.S.: clsProdotto, Pagina_Documento, brr...
http://10rem.net/articles/net-naming...best-practices
P.P.S.: System.Drawing è un namespace, non una classe.