My website's content is xml, and I use Apache Fop to turn it into a PDF with page numbers and other nice things. It works nicely, but takes some setup.
#2 is interesting...can you give an example solving circular dependencies?
Even if you had an interface, wouldn't you still have the implementations still causing a circular dependency?