It sounds like you need to read the Designer wiki entry Allow only selected users to print a form in the Notes client .
As for hiding controls and fields based on the user’s identity, this is easily done using @UserName, @UserRoles, and/or @UserNamesList in a hide formula (depending how you know who the approver is).
You can have fields be visible on a form using Hide / When formulas.
You’re hiddne fields coud be based on a Role, say [Approver], where the hide when is !@IsMember(“[Approver]”;@UserRole)
You could also use Contriol Access Sections.
Preventing of printing, you could do look at $KeepPrivate or use the Hide / When Printing check mark set on version 1 of the form and once approved change the form to version 2 where that hide / when is NOT checked.
As a reminder, just because something is hidden doesn’t mean the Creator cannot look at the document properties to see what other fields may exist on the document.
Also prevention of print can be “beat” by doing things like print screens.