Not quite the answer, but I think you are missing out on Ghostscript too quickly.
Do you know about the GhostScript API (for embedded Ghostscript)? Or in -dJOBSERVER mode, which can take a series of PS commands given to its standard in?
However, you still won't get your callbacks and still not multithreaded.
As already mentioned, iText can do this, but it would be necessary to go through all the content and images that look for color spaces without shades of gray and convert them to a space-specific mode.
You will also have to replace the pixel data with any images you may find.
The good news is that iText [Sharp] is capable of working in multiple threads, provided that each document is used from one thread at a time.
I suspect this also applies to the proposed commercial library, which is not so good.
And then a light came on above my head ... on a gray scale.
Blend Modes and Transparency Groups!
Take all the contents of the current page and paste it into the transparency group, which is blended with a solid black rectangle that covers the page. I think even luminosity in alpha blend mode ... let's see here.
Yes, the links section in PDF 11.6.5.2 "Soft Mask Dictionaries". You will need the luminosity group.
Now, the bad news. If your goal in switching to the gray scale is to save space, this will fail completely. This will actually make each file a little big ... say 100 bytes per page, give or take.
Better PDF software will also be very hot. No need to apply your cousin's rendering project. This is the extended graphic material here, often used by Common PDF Files, so the last kind of thing to be implemented.
So ... For each source page
Create a new page.
Cover it with a black background.
Cover it with a white rectangle (if it was back before) in the transparency group, which uses the soft mask dictionary, which is the luminosity of the original content of the page (now it is placed in the XObject form).
Since this is your own code, you will have ample opportunity to do what you want to do at the beginning or end of each page.
Golly, this is just crazy to work! This requires some PDF-Fu, but not as much as "converting each color space and image differently when I view a document." Deeper knowledge, less code to write.