1) Get pyglet to render to an image instead of a screen.  This seems 
like the nicest approach, but I don't know if pyglet offers the 
possibility of rendering to a PNG instead of an actual screen.
2) Display the slides with Bruce to the screen, and screen-grab to get 
the image.  I've looked into writing a plugin that simply uses PIL to 
grab the screen.  It would be added as the last element of each page, so 
that when it is placed, it takes the grab.  I can modify the slides to 
add the plugin, and drive bruce to show each slide one at a time, and I 
think I can even use win32 to find the location of the window to drive 
PIL to get the right bits (whew!), but maybe there's a short-cut here?
3) Maybe there's another possibility?
I'm willing to hack almost any layer of the bruce stack to get the best 
solution, but I'm a n00b at this code base, so don't know where the 
grain of the wood lies.
--Ned.
-- 
Ned Batchelder, http://nedbatchelder.com
Hit control-S when you want a screenshot and a file screenshot-<random 
number>.png will be written.
I'll add this to the README.txt :)
    Richard
   pyglet.image.get_buffer_manager().get_color_buffer().save('slide.png')
looks really good, but when I try putting it in a plug-in, I get a
number of blank PNGs, so it's clear that the place() method in a plugin
is not the right point in the pipeline to capture the look of the slide.