uhm....according to my research, the easiest file to print is image files like JPEG.....so I think I would focus on printing image files first.....please help...
Let us break down the tasks you need to do.
1. You need an interface to the USB drive. This is of course a USB host.
2. The software on the MCU must be able to read the USB. This means the MCU software must at least have a form of DOS (Disk Operating System) to read a FAT formatted USB drive.
3. Once it is able read a JPEG file, software must be able to convert it to a raster format suitable for printing.
4. You need another interface to the printer. If you use a USB interface, then you would need a hub to expand the number of USB ports. It is harder to communicate through a hub than directly connected to the USB port. For example, digital cameras directly connected to the printer use USB OTG.
5. As you said you can select the printer. You can select a printer with a parallel port. That would simplify communicating to the printer.
6. You have to write software to send the raster data to the printer following the protocol that the printer knows.