Because the lines per page is wrong.
For example, if you are sending 66 lines per page, but the printer is set for 60, the "extra" 6 lines from each page will end up on the next page, so you scroll down with each page.
(SCO, System V) You can change this in the interface script (see /usr/spool/lp/model/HPLaserJet) or, on all but the oldest models, in the printer itself.
Some cheaper models have no front panel for settings like these; you have to send escape codes to control the printer.
If you are working with escape codes, consider that "lines per page" actually comes from lines per inch and total page length. Top and bottom margins need to be accounted for also.
HP has specific settings that relate to these things. See HP LaserJet Series Printers - PCL Commands, Basic Page Formatting, and Font Selection for a listing.
CUPS systems can control this with options (from Command-Line Printing and Options):
lp -o lpi=6 filename lp -o page-left=value -o page-right=value -o page-top=value \ -o page-bottom=value filename The value argument is the margin in points; each point is 1/72 inch
If you found something useful today, please consider a small donation.
Got something to add? Send me email.