Если бы это был я (и 20 лет назад), я бы сконцентрировался на правильном написании документа в GDI как хорошей, хорошо структурированной программе на C #. Оттуда Windows может отобразить его на экране или практически на любом принтере, для которого у вас есть драйверы.
Позвольте Windows беспокоиться о драйверах печати для фактического рендеринга документа GDI на бумагу и обработки системных вещей, таких как порт, к которому он подключен (USB, Parallel и т. Д.), И всех неприятных деталей протокола.
Пожалуйста, не связывайте вещи с портами "LPT1", "COM" или чем-то подобным дерьмом. Ваши администраторы и будущие пользователи вашего программного обеспечения будут вас ненавидеть за это.