Search code examples
javascriptjqueryasp.net-mvcangularaspose

Generating document preview using client side script


I am working on a solution where i need to generate preview in popup for (pdf,word,excel) .I have achieved same by converting all format using Aspose.Words and Aspose.Cells. Below is my code:

 public ActionResult PreviewDoc(string fileName)
    {

        string fileExtension = fileName.Substring(fileName.LastIndexOf(".") + 1);
        string pathSource = Server.MapPath("~/"+ fileName);
        MemoryStream streamToWrite = new MemoryStream();
        using (FileStream file = new FileStream(pathSource, FileMode.Open, FileAccess.Read))
        {
            byte[] bytes = new byte[file.Length];
            file.Read(bytes, 0, (int)file.Length);
            streamToWrite.Write(bytes, 0, (int)file.Length);
        }

        var previewStream = this.GetPdfStream(fileExtension, streamToWrite);
        // Load the document.

        // Convert the document to byte form.
        byte[] docBytes = previewStream.ToArray();

        // The bytes are now ready to be stored/transmitted.
        // Now reverse the steps to load the bytes back into a document object.
        MemoryStream inStream = new MemoryStream();
        inStream.Write(docBytes, 0, docBytes.Length);
        inStream.Position = 0;

        return new FileStreamResult(inStream, "application/pdf");
    }

    public MemoryStream GetPdfStream(string extension, MemoryStream streamToRead)
    {
        MemoryStream outStream = new MemoryStream();
        if (extension.Trim().ToLower() == "doc" || extension.Trim().ToLower() == "docx")
        {
            Aspose.Words.Document doc = new Aspose.Words.Document(streamToRead);
            // Save the document to stream.
            doc.Save(outStream, SaveFormat.Pdf);
        }
        else if (extension.Trim().ToLower() == "xls" || extension.Trim().ToLower() == "xlsx")
        {
            Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook(streamToRead);
            workbook.Save(outStream, Aspose.Cells.SaveFormat.Pdf);
        }
        else
        {
            outStream = streamToRead;
        }

        return outStream;
    }

But as Aspose requires licesnse which i don't have so do we have any client side approach where we return stream from mvc controller and convert that to preview at client side and open in new window?


Solution

  • Yes it is true that a valid license is a must to achieve the task. You can convert and send the output stream to client browser but it will contain the Aspose watermark. Furthermore you can get a temporary license for evaluation. Please visit the link and get the temporary license for 30 days.

    I work with Aspose as Developer evangelist.