In other words, I would like to lay out my printable documents in a way that’s familiar to me, for which I have tools that can support this and that can easily be changed without having to do a search and replace through a hundred distance instances of a paragraph. In short, I want CSS, acting on XHTML, generating my printed pages as readily as it displays that content to the screen.
A previous blog from Michael Day about PrinceXML reminded me that I hadn’t had a chance to play with it. My previous experiences with XHTML to PDF conversion were, to put it bluntly, terrifying, and so, as I was downloading the JAR file I wasn’t expecting a lot. When I tried it, I wasn’t disappointed … I was stunned. I had taken an article that I’d recently written for XML.com and run it through Prince. It digested the ten page article and cranked out a PDF in under a second, and the quality was better than anything I’d been able to get with a straight DocBook/FO/PDF rendering.
I looked up the documentation, and found that it supported the CSS 3.0 page rendering set, as well as support for columns (including columnar rules), it could be used to print SVG content embedded or linked to the main XHTML document, and it included a nice set of extension properties for handling headers and footers, internal links, rounded borders, and the full panoply of CSS selectors including nth-child (which seemingly no one supports), content search and the whole gamut of pseudo-classes.
The First Law of the Internet is that Interoperability trumps everything - including innovation. The problem with vendor driven open standards is that innovation ontinually trumps interoperability. So much so that interop is pretty much an after thought - as is the case with ODF and OOXML!
The future of the Open Web will depend on open source communities banding together with governemnts and user groups to insist on the First Law of the Internet: Interoeprability. If they don't, vendors will succeed in creating slow moving web standards designed to service their product lines. Vendor product lines compete and are differentiated by innovative features. Interoeprability on the other hand is driven by sameness - the sharing of critical features. Driving innovation down into the interop layer is what the open standards process should be about. But as long as big vendors control that process, those innovations will reside at the higher level of product differentiation. A level tha tcontinues to break interoperability!