Отображение предварительного просмотра документа в форме эффективным способом - PullRequest
0 голосов
/ 04 января 2012

У меня есть несколько документов, хранящихся как BLOB в БД SQL Server.

Документы могут иметь несколько форматов (Word, Excel, PDF и т. Д.).

Я не хочу извлекать документ из файла, а затем использовать программу для его открытия: это слишком медленно, и моя процедура должна быть быстрой, чтобы позволить пользователю быстро просмотреть документ.

Оглядываясь вокруг, кажется, что лучший способ быстро отобразить документ в форме - использовать WebBrowser.

Итак, я поместил элемент управления WebBrowser (WebBrowser1) в мою форму и написал следующий код, чтобы попытаться заполнить его, используя MemoryStream, который получает результат запроса и передает его WebBrowser1:

    Dim drQueryDoc As SqlDataReader
    Dim sqlcmdDoc As SqlCommand = cnDB.CreateCommand 'cnDB is the connection I use to SQL Server
    sqlcmdDoc.CommandText = "SELECT Documento FROM TabApprovazioni WHERE IDPassaggio = " & lblIDPassaggio.Text & ";"
    drQueryDoc = sqlcmdDoc.ExecuteReader
    If drQueryDoc.Read Then
      Dim mstDocument As New System.IO.MemoryStream(drQueryDoc("Documento"), drQueryDoc("Documento").length)
      WebBrowser1.DocumentStream = mstDocument
    End If

Я получаю быстро, но это не документ в формате Word (если документ в формате Word): он похож на блокнот, пытающийся открыть документ Word: -)

Как я могу исправить этот код для правильного отображения сохраненного документа?

Идеи о том, почему документ отображается неправильно?

Допустимые альтернативы?

Большое спасибо заранее

...