Jesse, do not put images in the collection. Rather, put the file names there, and in the
print method render the image which should go to the given page. The filenames are known beforehand and the collection will thus contain all of them right from the start, hence the page will always be found (unless there is an error rendering the image, but that is another concern).
This can certainly introduce gaps in processing Bill mentioned. If that was a problem, you might perhaps create a bounded queue of, say, 5 items for rendered images and render the images in a separate thread. Some coordination between the printing thread and the rendering thread might be needed to satisfy the
java.awt.print.Printable page ordering contract but - at the first blush - it should be doable.