I'm a Mac OS X user, who, in order to simply my software use to one editor and one formatter, would like to use XHTML/CSS for everything. Since Opera 8 appears to support the same print capabilites as Prince, and Mac OS X creates PDF files, what are the advantages of Prince vs Opera?
It's quite interesting question. I like both products very much. Below are some observation.
Prince supports some parts of CSS3 like CSS3 selectors (for web browser it's harder to implement CSS3 selectors as some of them undermine incremental rendering), paged media, generated content (cross references!), line (partial) that are not supported by browsers including Opera. Also Opera has some printing related bugs that make it less convenient for printing purposes. Prince resolves entity references declared in external DTDs while Opera ignores external DTDs (downloding DTDs would slow down rendering of web pages).
Prince produces PDF immediately so I usually run it directly from my text editor using comand line options. This is both advantage as PDF is widely used format and we lacked PDF oriented CSS formatter and disadvantage as Prince is tied to PDF format and implies Acrobat Reader to be installed.
From another hand Opera has full CSS2.1 support (modulo bugs of course) that Prince does not have yet. Opera fully supports XHTML 1.0 while in Prince it is limited (it recognises IDs, classes and hyperlinks and applies default CSS style sheets) but sufficient for printing purposes.
Opera supports multiple CSS media types (screen, print, projection, handheld, aural/speech), Prince is focused on print media (where it performs better then Opera). Opera supports EcmaScript, DOM and XML events that prince does not (and probably should not). Opera perfoms glyph by glyph font switching (so if some glyphs are missing in font Opera will substitute another font) that is not done yet in Prince (but Prince reports missing glyphs). So if Opera would implement CSS3 paged media module and fix printing related bugs then it would be simply invaluable browser.