将保存的PDF文件从数据库显示到PDFVIEWER

时间:2017-12-01 04:03:41

标签: mysql vb.net pdf

我已成功将pdf文件保存为我的数据库(MySQL)作为longblob并使用此代码:

opf.Filter = "PDF FILES |*.pdf"
    If opf.ShowDialog = Windows.Forms.DialogResult.OK Then

         //Display the PDF you want to save in the PDFVIEWER
        pdfview.src = opf.FileName

        Dim Mystream As New FileStream(opf.FileName, FileMode.Open)
        Dim filesize As Long = Mystream.Length
        Dim buffer(filesize) As Byte
        Mystream.Read(buffer, 0, filesize)

         //Save the pdf file to the database
        Dim query As String = "insert into sample(pdfnaho)values(@file)"
        Dim cmd As New MySqlCommand(query, con)
        con.Open()
        cmd.Parameters.AddWithValue("@file", buffer)
        cmd.ExecuteNonQuery()
        MsgBox("SAVED!")
        con.Close()

    End If

然后我使用此代码进行显示但它不起作用,我不知道该怎么做:

Dim query As String = "select * from sample where id = 1"
    Dim cmd As New MySqlCommand(query, con)
    con.Open()
    Dim dr As MySqlDataReader = cmd.ExecuteReader
    While dr.Read
        If dr.HasRows Then
            pdfview.src = dr.GetString("pdfnaho")
        End If
    End While
    con.Close()

如何从数据库中显示我保存的pdf文件?谢谢

1 个答案:

答案 0 :(得分:0)

我不能将此作为评论,因为我没有足够的声誉。

您使用的是什么PDF查看器?如果它是Adobe PDF Viewer,我几乎可以肯定(从之前的另一个项目的研究中)你无法流入它。

这是我之前项目中的一个示例,我修改了它以适合您的项目,请确保编辑查询以适合您的表和列名称。

您必须运行一个只返回包含二进制文件的单元格的查询。

Dim query as String = "SELECT file_content FROM sample WHERE ID=1;"

Public Sub OpenPDF()

    If File.Exists(Application.StartupPath() & "\temp.file") = True Then
        pdfview.src = "blank.pdf"
        My.Computer.FileSystem.DeleteFile(Application.StartupPath() & "\temp.file")
    End If

    Dim cmd As New MySqlCommand(query, con)
    Dim Buffer As Byte()

    con.open()
    Buffer = cmd.ExecuteScalar
    con.close()

    File.WriteAllBytes(Application.StartupPath() & "\temp.file", Buffer)

    pdfview.src = Application.StartupPath() & "\temp.file"
End Sub

通过这个例子,代码将检查是否存在" temp.file"并删除它,然后在pdfviewer上加载任何内容以清除正在显示的内容。

数据库连接,获取数据,将其存储在文件中,然后使用pdfviewer显示它。