96 lines
3.3 KiB
VB.net
96 lines
3.3 KiB
VB.net
Imports System.IO
|
|
Imports DevExpress.Utils
|
|
Imports DigitalData.Modules.Database
|
|
Imports DigitalData.Modules.Logging
|
|
Imports GdPicture14
|
|
Imports Newtonsoft.Json
|
|
|
|
Public Class frmFinalizePDF
|
|
Private Const CONNECTIONSTRING = "Server=sDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=+bk8oAbbQP1AzoHtvZUbd+Mbok2f8Fl4miEx1qssJ5yEaEWoQJ9prg4L14fURpPnqi1WMNs9fE4=;"
|
|
|
|
Private Database As MSSQLServer
|
|
Private LogConfig As LogConfig
|
|
|
|
Private Viewer As GdPicture14.GdViewer
|
|
Private Manager As AnnotationManager
|
|
|
|
|
|
|
|
Private Sub frmFinalizePDF_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
|
LogConfig = New LogConfig(LogConfig.PathType.CustomPath, Application.StartupPath)
|
|
Database = New MSSQLServer(LogConfig, MSSQLServer.DecryptConnectionString(CONNECTIONSTRING))
|
|
|
|
Manager = New AnnotationManager()
|
|
Dim oLicense = New LicenseManager()
|
|
oLicense.RegisterKEY("21182889975216572111813147150675976632")
|
|
End Sub
|
|
|
|
Private Function LoadAnnotationData() As String
|
|
Dim oSql = $"SELECT VALUE FROM [TBSIG_DOCUMENT_STATUS] WHERE ENVELOPE_ID = {txtEnvelope.Text} AND RECEIVER_ID = {txtReceiver.Text}"
|
|
Return Database.GetScalarValue(oSql)
|
|
|
|
End Function
|
|
|
|
Private Function LoadEnvelopeDocument() As String
|
|
Dim oSql = $"SELECT FILEPATH FROM [TBSIG_ENVELOPE_DOCUMENT] WHERE ENVELOPE_ID = {txtEnvelope.Text}"
|
|
Return Database.GetScalarValue(oSql)
|
|
|
|
End Function
|
|
|
|
Public Class AnnotationData
|
|
|
|
Public Property annotations As List(Of Annotation)
|
|
Public Property attachments As Dictionary(Of String, Attachment)
|
|
End Class
|
|
|
|
Public Class Annotation
|
|
Public Property id As String
|
|
Public Property bbox As List(Of Double)
|
|
Public Property type As String
|
|
Public Property isSignature As Boolean
|
|
Public Property imageAttachmentId As String
|
|
End Class
|
|
|
|
|
|
|
|
Public Class Attachment
|
|
Public Property binary As String
|
|
Public Property contentType As String
|
|
End Class
|
|
|
|
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
|
|
Dim oAnnotationData = LoadAnnotationData()
|
|
Dim oDocumentPath = LoadEnvelopeDocument()
|
|
|
|
Dim oConverter = JsonConvert.DeserializeObject(Of AnnotationData)(oAnnotationData)
|
|
|
|
Dim oImages = oConverter.annotations.Where(Function(a) a.type = "pspdfkit/image").ToList()
|
|
|
|
Manager.InitFromFile(Application.StartupPath & "/source.pdf")
|
|
|
|
For Each oImage In oImages
|
|
Dim oAttachment = oConverter.attachments.Where(Function(a) a.Key = oImage.imageAttachmentId).Single()
|
|
Dim oBytes = Convert.FromBase64String(oAttachment.Value.binary)
|
|
|
|
|
|
'Using oStream As New MemoryStream(oBytes)
|
|
' Using oFileStream As New FileStream($"{oImage.imageAttachmentId}.png", FileMode.OpenOrCreate)
|
|
' oStream.CopyTo(oFileStream)
|
|
' oStream.Flush()
|
|
' End Using
|
|
'End Using
|
|
Dim x = oImage.bbox.Item(0) / 72
|
|
Dim y = oImage.bbox.Item(1) / 72
|
|
Dim w = oImage.bbox.Item(2) / 72
|
|
Dim h = oImage.bbox.Item(3) / 72
|
|
|
|
Manager.AddEmbeddedImageAnnotFromBase64(oAttachment.Value.binary, x, y, w, h)
|
|
|
|
|
|
|
|
Next
|
|
|
|
Manager.SaveDocumentToPDF("pdf.pdf")
|
|
Manager.Close()
|
|
End Sub
|
|
End Class |