2023-11-16 09:19:15 +01:00

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