Como interceptar dados enviados para uma impressora?

Estou em interface com um aplicativo que está enviando um arquivo de impressora bruto para a impressora padrão. Essa é a única coisa que ele fará com os dados.

Eu preciso obter esse arquivo de alguma forma para que eu possa armazená-lo em outro lugar. Qual seria a melhor forma de fazer isso?

O melhor que pensei é escrever um aplicativo que escute uma porta específica e defina a impressora padrão para essa porta.

Funcionaria assim? Existe uma maneira melhor?