Hi
Please Help
Language: VB.Net (VS2017)
Telerik Version: 2017.3.1017
Application Type: Windows Desktop
Looking for a solution to read the PDF file stored in SqlServer as varbinary(MAX). \
I have saved the pdf file as follows.
Private Sub Save_File()
Dim fd As OpenFileDialog = New OpenFileDialog()
fd.Filter = "pdf file|*.pdf"
If fd.ShowDialog = System.Windows.Forms.DialogResult.OK Then
Dim filebyte AsByte() = Nothing
Dim con As SqlConnection = New SqlConnection(ConnStr)
Dim cmd As SqlCommand = Nothing
filebyte = File.ReadAllBytes(fd.FileName)
cmd = New SqlCommand("Insert into tbl_Doc (LYR_Doc) Values(@pdf)", con)
cmd.Parameters.Add("@pdf", SqlDbType.Binary).Value = filebyte
con.Open()
cmd.ExecuteNonQuery()
con.Close()
Interaction.MsgBox("File saved into database", MsgBoxStyle.Information)
EndIf
EndSub
Now I need to read this data and load in the pdfviewer.
I tried as follows. But no result.
Dim eXactConnection As New SqlClient.SqlConnection(ConnStr)
Dim eXactCommand As New SqlClient.SqlCommand("SELECT LYR_Doc from tbl_Doc where LYR_Name = 'Arun'", eXactConnection)
eXactConnection.Open()
If Not IsDBNull(eXactCommand.ExecuteScalar()) Then
Dim Docdata As Byte() = DirectCast(eXactCommand.ExecuteScalar(), Byte())
Using stream As New IO.MemoryStream(Docdata)
RadPdfViewer1.LoadDocument(stream)
End Using
End If
Thanks in advance.
Arun Madhav
I suggest you export the data you read from the SqlServer to a pdf file on your file system and try to open it in any Pdf viewer, so you can validate if the data read from the DB is correct.
Another thing you could try is to move the stream position to the beginning of the stream before passing it to the LoadDocument method:
stream.Seek(0, SeekOrigin.Begin)
Hi Mr Demirev,
Thank you very much for your suggestion. It worked by exporting first to the file system and LoadDocument(File Name).
I am still searching for the solution to load from stream direct so that we don't want to store 1st as a file. (
stream.Seek(0, SeekOrigin.Begin)
) this didn't work. (I May used it wrongly)
Thank you.
Hello Arun,
It would be easier for me to help you if you set up a sample project I could use to reproduce the issue. Could you please create a sample project maybe using for example SQL Line in-memory database? This way I will be able to run it and investigate the issue on my end.
As for my suggestion for stream.Seek, you could use the following code:
Dim eXactConnection As New SqlClient.SqlConnection(ConnStr) Dim eXactCommand As New SqlClient.SqlCommand("SELECT LYR_Doc from tbl_Doc where LYR_Name = 'Arun'", eXactConnection) eXactConnection.Open() If Not IsDBNull(eXactCommand.ExecuteScalar()) Then Dim Docdata As Byte() = DirectCast(eXactCommand.ExecuteScalar(), Byte()) Using stream As New IO.MemoryStream(Docdata)
stream.Seek(0, SeekOrigin.Begin) RadPdfViewer1.LoadDocument(stream) End Using End If
Mr Demirev,
Thank you very much. It worked.