Quantcast
Channel: Forum SQL Server Database Engine
Viewing all articles
Browse latest Browse all 15889

Update PDF file in FileTable

$
0
0

Hi-
I'm new to working with FileTables and am wondering if the following code (which saves annotations to a PDF file in the FileTable with changes that are made through the PDF control) makes sense. My save results are mixed while using the PDF control, depending upon the PDF file that is loaded. If a save is successful, the PDF control will load the PDF file with the annoatations, but the PDF file will not open in Adobe Acrobat (file corruption error is reported).

When using the provided PDFTron sample PDF control project with a file loaded from the file system, no errors are reported when saving annotations to the PDF file, and the changes can be viewed using Adobe Acrobat.

I'm wondering whether my code is generally appropriate, or if I'm going about this all wrong.

        'Create a connection to the database
        Dim ConStr As String
        ConStr = MyAppConnString
        Dim con As New SqlConnection(ConStr)
        con.Open()

        Dim sqlCommand As New SqlCommand()

        ' Set Command text to stored procedure name
        With sqlCommand
            sqlCommand.Parameters.Clear()
            .CommandText = "RetrieveDocument"
            ' Set the command type to Stored procedure
            .CommandType = CommandType.StoredProcedure
            ' Add parameter/s to the command. Depends on the Stored procedure
            .Parameters.Add("@SelectedNode", SqlDbType.NVarChar, 128).Value = myTag
            'add the conection to the command
            .Connection = con
        End With

        Dim filePath As String = CStr(sqlCommand.ExecuteScalar())

        'Obtain a Transaction Context
        Dim transaction As SqlTransaction = con.BeginTransaction("ItemTran")
        sqlCommand.Transaction = transaction

        ' Set Command text to stored procedure name
        With sqlCommand
            sqlCommand.Parameters.Clear()
            .CommandText = "tContext"
            ' Set the command type to Stored procedure
            .CommandType = CommandType.StoredProcedure
            .Connection = con
        End With

        Dim txContext As Byte() = CType(sqlCommand.ExecuteScalar(), Byte())

        'Open and read file using SqlFileStream Class
        Dim sqlFileStream As New SqlTypes.SqlFileStream(filePath, txContext, FileAccess.ReadWrite)
        Dim buffer As Byte() = New Byte(CInt(sqlFileStream.Length)) {}

        'Bind the image data to an image control
        Dim ms As MemoryStream = New MemoryStream(buffer)

        _pdfdoc.Lock()
        Try
            _pdfdoc.Save(ms, SDF.SDFDoc.SaveOptions.e_incremental)
        Catch ex As Exception
            MessageBox.Show(ex.ToString(), "Error during the Save")
        End Try
        _pdfdoc.Unlock()

        sqlFileStream.Write(buffer, 0, buffer.Length)

        'Cleanup
        sqlFileStream.Close()
        sqlCommand.Transaction.Commit()
        con.Close()

Thank you,

Matt


Viewing all articles
Browse latest Browse all 15889

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>