The Emacs commands for making hardcopy let you print either an entire buffer or just part of one, either with or without page headers. See also the hardcopy commands of Dired (Section 16.10) and the diary (Section 31.10.1).
Print hardcopy of current buffer with page headings containing the file name and page number.
Print hardcopy of current buffer without page headings.
Like print-buffer but print only the current region.
Like lpr-buffer but print only the current region.
The hardcopy commands (aside from the Postscript commands) pass extra switches to the lpr program based on the value of the variable lpr-switches. Its value should be a list of strings, each string an option starting with -. For example, to specify a line width of 80 columns for all the printing you do in Emacs, set lpr-switches like this:
(setq lpr-switches '("-w80"))
You can specify the printer to use by setting the variable printer-name.
The variable lpr-command specifies the name of the printer program to run; the default value depends on your operating system type. On most systems, the default is "lpr". The variable lpr-headers-switches similarly specifies the extra switches to use to make page headers. The variable lpr-add-switches controls whether to supply -T and -J options (suitable for lpr) to the printer program: nil means don't add them. lpr-add-switches should be nil if your printer program is not compatible with lpr.