We have a site that needs to (as part of our process) generate a document (e.g. Word docx document) that is derived from data within our application merged with a template document. This document can be edited at run time by the user after it is generated. We know we are looking at a CMS like system (since the users will need to be able to edit/create new templates) but I was wondering if Sharepoint could be of better use (since we don;t need a lot of the overhead of a traditional CMS system). Can any sharepoint experts weigh in and give me some pointers of where to look.
Sharepoint is not going to relieve you of the weight and baggage of a traditional CMS system. If anything it will increase your baggage compared with a lot of CMS tools out there.
So in short - dont look at Sharepoint - look elsewhere!
Infopath is the forms technology that Sharepoint people are going to recommend to you. Most Infopath forms features require a full MOSS installation and the associated licensing fees. I think you can acheive what you want here with just WSS however.
If DOCX files as the form template is a hard and fast requirement of your app you can;
- Automate Word (physically isolate this), this is not officially supported by MS
- Explore using OpenXML (assuming all clients are using Word 2007).
If you ultimately need to generate PDFs or Word 2003 DOC files as output you are stuck automating Word otherwise #2 is the most server friendly solution.
Either way I think you can use a SP document library to hold the DOCX files and your users can share and edit the templates with versioning this way. You can programatically access these files in your application specific code and perform the data merging 'out of band'.
I am working on a similar problem -- generating word documents from information stored in a SharePoint site. The real magic here relies on using Content Controls in office 2007 - as the new version of the Office suite is based on Office Open XML, generating documents from data is almost trivial.
Enabling the documents to be editable after creation is a simple configuration change that can be made either programmatically or in the document template itself. In fact I think the true value of the platform wills shine when you can see how easily you can your organizations business processes to SharePoint.
Getting content from deep within a segment of your company, through the various approval steps to the public facing internet site is breathtakingly simple, once everything is configured properly.
Here are some good blog posts on generating OOXML docs on the server
- ECMA Office Open XML - Options for Generating Word Documents (on the server;))
- Generating Word Documents on the Server (Part 2) - Dynamically Adding Content Controls / Structured Document Tags (SDT) using System.IO.Packaging
Note that clients DO NOT need to run Office 2007 to open these documents, you can either have a conversion process, or you can install the free compatibility packs for Office XP, 2000 & 2003
As far as SharePoint as CMS, I think its a pretty compelling proposition. There is definitely some configuration and implementation challenges, but I think that will be the case with any enterprise CMS package. One important consideration is the amount of traffic your CMS'd site will see. I don't think SharePoint is ready to scale up to google-esque traffic, but its certainly going to be good enough for a typical corporate internet presence.
Here is a list of some public sites that are running MOSS
Once you get past the hurdle of initial configuration, it becomes very easy to enable CMS tasks across the organization as it works so well on both sides of the Firewall.
I think its a great product, and amazed by its flexibility and extensibility.
jt
Here is the component that generates document based on the custom template. The documents are generated from the sharepoint list ... so the data is pulled from the list item into the document on the fly: http://store.sharemuch.com/products/generate-word-documents-from-sharepoint-list
Hope that helps,
Yaroslav Pentsarskyy Blog: www.sharemuch.com