Wednesday, December 22, 2010

A way to download an Aspose Word document to a browser using MVC2

Perhaps there's a better way, but here is what I did quickly to get an Aspose Word document down to a browser. In the controller class use a MemoryStream to feed a FileStreamResult.
//Controller
public ActionResult MergeAndDownload(Choice choice) {
 MemoryStream memoryStream = new MemoryStream();
 Document document = ... // get your Aspose document
 document.Save(memoryStream, SaveFormat.Docx);
 memoryStream.Position = 0;
 var fileStreamResult = new FileStreamResult(memoryStream, "application/ms-word");
 fileStreamResult.FileDownloadName = "MySuggestedFilename.docx";
 return fileStreamResult;
}
In the View just do a Model.Save()
//View
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Aspose.Words.Document>" %>
<asp:Content ID="Content1" runat=server ContentPlaceHolderID="MainContent">
<%@ Import Namespace="Aspose.Words" %>
<% 
    Response.setContentType("application/msword"); 
    Model.Save(Response.OutputStream, SaveFormat.WordML); %>
</asp:Content>
If you know a simpler way, please post in comments.

Saturday, December 04, 2010

Google Docs Revisited

I watched the Google Docs videos this morning. The Visio replacement, "Drawings", looks very useful, and I didn't know they had a PowerPoint replacement, "Presentations". If I were a company that made 32% of its income from office software, I'd be nervous.
I didn't even know about their online survey tool: