виртуальный принтер должен, по-моему, и сам печатать. Как варианты - можно написать свой драйвер для реального принтера, либо перехватывать системные вызовы, связанные с очередью печати. Но лучше всего, получать содержимое еще до печати, модифицировать и отправлять на печать.
Но виртуальный принтер тоже можно использовать. Во-первых, если его написать самому, то он сможет редактировать документ и скидывать в файлик, например пдф, потом печатать пдф. Во-вторых, можно взять готовый пдф-принтер, печатать на нем, потом открывать пдф-ки, редактировать их и отправлять на печать на реальный принтер.