Казалось бы всё замечательно! НО: если будет слишком длинная строка, она "элегантно" быдет уходить за лист. Чё с этим делать? Думал, Printer.Zoom решит проблему - да не вышло. У меня на счёт этого две идеи:
1. Как то резать сам текст на строки длины, меньшей чем длина листа бумаги, а затем печатать их.
2. Возможно есть какое то свойство у Printer-а, определяюшее правую границу листа, чтобы доходя до него, слова переносились автоматически.
Такого свойства у принтера походу нет, так что резать!
Я бы наверно гнал по контексту принтера тестовую строку через GetTextExtentExPoint.
шестой параметр этой ф-ции (LPINT alpDx) - массив int-значений правых границ каждого символа в строке в логических координатах. По ним бы и определять - резать или нет.
Но позвольте, ведь есть такие свойства, как Printer.CurrentX и Printer.CurrentY, которые задают верхний левый угол. Наверняка можно сделать что то и с правой частью листа.