You can use the GetDeviceCaps function to obtain the size and resolution of the printable area of the page. (In most cases, this area won't be the same as the entire size of the paper.) You can also obtain the relative pixel width and height, if you want to do your own scaling.
You can obtain another important printer characteristic from the RC_BITBLT bit of the value returned from GetDeviceCaps with a parameter of RASTERCAPS (”raster capabilities“). This bit indicates whether the device is capable of bit-block transfers. Most dot-matrix and laser printers are capable of bit-block transfers, but most plotters are not. Devices that can't handle bit-block transfers do not support the following GDI functions: CreateCompatibleDC, CreateCompatibleBitmap, PatBlt, BitBlt, StretchBlt, GrayString, DrawIcon, SetPixel, GetPixel, FloodFill, ExtFloodFill, FillRgn, FrameRgn, InvertRgn, PaintRgn, FillRect, FrameRect, and InvertRect. This is the single most important distinction between using GDI calls on a video display and using them on a printer.