Some of the features I think it must include are:
- Print Entire Solution
- Ability to print line numbers
- Proper choice of coding font and size to improve readability
- Nice Header Information
- Ability to print regions collapsed
Couple feature additions:
- Automatically insert page breaks after methods/classes
- Keep long lines readable (nearly all current implementations are broken)
Note: There are many reasons to need to print code... One very good one is escrow.