2017-11-24 4 views
-1

Ich arbeite an einer Lösung, wo ich Vorschau in Popup für (PDF, Word, Excel) generieren muss. Ich habe dasselbe erreicht, indem Sie alle Formate mit Aspose.Words und Aspose.Cells konvertieren. Unten ist mein Code:Generieren von Dokumentvorschau mit clientseitigem Skript

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; 
    } 

Aber wie Aspose licesnse erfordert, die ich habe nicht so haben wir eine Klient Ansatz, bei dem wir Strom von Mvc Controller zurückgeben und dass bei Client-Seite und öffnet sich im neuen, um eine Vorschau konvertieren Fenster?

Antwort

0

Ja, es ist wahr, dass eine gültige Lizenz ein Muss ist, um die Aufgabe zu erfüllen. Sie können den Ausgabestream konvertieren und an den Client-Browser senden, er enthält jedoch das Aspose-Wasserzeichen. Außerdem können Sie eine temporäre Lizenz zur Auswertung erhalten. Bitte besuchen Sie die link und erhalten Sie die temporäre Lizenz für 30 Tage.

Ich arbeite mit Aspose als Entwickler Evangelist.

Verwandte Themen