The following is directly how to address your need of "catch[ing] the information."
The most efficient manner is to subclass the program that is sending the information to the printer, then record all data going to and coming from that program.
Subclassing has been around for a long time. It is nothing new.
If you need to know how to do this yourself, then the following is for that.
If you need to write (on your own) that kind of program fast (really fast) then use the Rapid Application Development VB6/sp5 for hooking and subclassing. There is code already on the internet written and stable in VB6 which can be adapted quickly to hook and subclass most Windows based programs. It has even been used to subclass internal parts of other programs. It is very stable.
If you want to write the code in a newer, but no less stable environment, use C++. I would suggest C++11. It comes packaged with CodeBlocks 17.12. CB17 is free.
C++ can do (I guess) every thing that VB6 can do, but it takes far longer to program to the same effect. It is your choice. I have found reason for each as needed.
I started learning C++ last summer (2019) and tried various avenues in that endeavor and settled on CB. I studied C++ editions, not to PhD level, but to my satisfaction, and I have chosen C++11.
I like both VB6 and C++11 each for what I may use them for. One is for very fast program development. The other is for Unicode and large number manipulations, etc.