Working on a similar project and considered going the XSL:FO route... there are some places that sell an XSLT doc that will perform the transform for you... which is a pretty elegant solution...
http://www.antennahouse.com/product/wordmltofo.htmand some that offer server side "engines" to do it...
http://www.ecrion.com/Products/XFRenderingServer/Overview.aspxWe decided to go with the Aspose components... Aspose.Words and Aspose.Pdf...
We construct the WordML inside of a DocX, load the DocX using Aspose.Words, save it using a proprietary Aspose PDF XML format, and load it using the Aspose.Pdf libs...
Its kinda round'about but the libs work very nicely, and preserve all of the non-textual content, images, etc...
//Edit
here is the alternative we considered before the Aspose solution...
http://alt-soft.com/Products_xml2pdf.aspxworked out to be about the same price...
also, the antennahouse XSLT is the cheapest, and is platform independent... but the added features of the 3rd party component are fun when someone else is footing the bill
