Действительно геморойно
можно спокойно использовать готовые компоненты для печати, в Delphi по дефолту втроен QuickReport (QReport), но есть масса очень не плохих, таких как FreeReport, FastReport и др... ключевое слово - Report, там тебе и превью будет и пр....
а если нужно просто без наворотов, то можно выводить все на канву объекта TPrinter, только учитывая разрешение принтера и картинок...