The current issue of "Zope Guru of the Week" has closed: =================================================================== Issue #4 -- Best way to output from ZOPE to MS Word =================================================================== Status: Closed Zen Level: Disciple (3/8) Keywords: DTML Submitted by: Brian Hickman bkkr@worldnet.att.net ------------------------------------------------------------------- My clients require a printed document, along with a version in MS Word format. What is the best way to send a document created in ZOPE to MS Word? *Editor: I'd like to broaden this to include alternative strategies for exporting formatted documents from Zope, as well as more classic "report writing."* ------------------------------------------------------------------- Reviewed by: Tres Seaver tseaver@palladion.com ------------------------------------------------------------------- Summary - David Brown suggests two possibilities: * construct a Word document on theserver-side using an ExternalMethod and the COM interface to Word; maybe even print the document from within the EM. *Ed.: Note that this requires that you run your Zope server on Win32; you would probably need to use the unsupported "COMObject":http://www.zope.org/Products/COMObject Product. It will also require figuring out where on the hard-drive the temporary document should live, and how to stream that document out as part of the response. Has anyone actually done this?* * Generate a RichTextFormat stream, which Word can read "natively". *Ed.: this is not for the faint of heart. Here are a couple of RTF links:* o Microsoft's "spec":http://msdn.microsoft.com/library/specs/rtfspec.htm (version 1.6) o "RTF Tools":ftp://ftp.primate.wisc.edu/pub/RTF o An RTF-to-HTML "translator":http://www.sunpack.com/RTF/ *This solution may not quite meet the spec, either, if the requirement, "document in MS Word format" is not sufficiently elastic as to encompass RTF.* - Shalabh recommends using WebDAV from Word2000, which lets you open, edit, and print Zope documents using WebFolders. *Ed.: I am assuming from his enthusiasm ("Simple, Sweet and Straightforward") that Shalabh is actually using this technique. I haven't managed to make it work yet, but I haven't tried very hard, either; I wiped Office2000 from the <strike>soles of my shoes</strike> HDD after an unhappy install. This looks like a good candidate for a HowTo.* - Lalo Martins notes that Word can read HTML: "just format it in a way that looks good in Word (you'll have to use trial-and-error for that)." *Ed.: anyone have a sample stylesheet or document which would help here? Word does UGLY things when it generates HTML -- I presume that reading it is somewhat simpler. This solution also ignores the poster's stated requirement for generating a "document in MS Word format" -- I don't much care for it as a requirement (it specifies a technical solution, not a business need), but it **is** part of the problem.* WRT the broader, "report-writing" question, Lalo reports success using the "PDFDocument"://http://www.zope.org/Members/gaaros/ZpdfDocument product to generate PDF files from within Zope (I'm guessing that this is the right URL -- it looks good, anyway). *Editor's plea: when possible, **please** include relevant links when you post a reply, whether here or on the mailing list; the usefulness of your reply goes **way** up when it links the resources needed to use it.* Conclusion First, many thanks to Brian, David, Shalabh, and Lalo! All of the proposed solutions have merit, given their respective tradeoffs. PDFDocument may be the best overall "reporting" solution, giving the precise control over layout which HTML simply can't; RTF generation looks like the "sanest" approach to the problem of "extruding" a Word document; reading documents in Word through WebDAV is cool, but may not play nice with DTML: either WebDAV hands out the rendered HTML (in which case Word can read but not edit it) or WebDAV hands out the DTML source (not useful for printing, but essential for editing.) This issue points up a couple of opportunities for product development: * hacking PDFDocument to produce RTF as an option * a framework for building "canned" reports using Zope's dynamic features, e.g., ZCatalog, ZSQL, etc. -------------------------------------------------------------------