Using the printer in FPC and Lazarus can be done from high levels of abstraction down to being able to control what bytes get sent to the printer.
From high to low abstraction level:
- LazReport Documentation LazReport allows creating report that can be printed on any printer supported by the OS
- Using the printer Tutorial on using printing in Lazarus, including painting of the printer "canvas".
- www.freepascal.org/docs-html/rtl/printer/index.html Turbo Pascal style unit that gives cross-platform but limited access (basically printing text files) to printers.
- Hardware Access Byte level control over what gets sent over which physical connection.
There may also be platform-specific code snippets, and API samples for the various OSes (Windows, OSX, Linux etc) on the relevant wiki pages. If so, they can be linked to here.