diff --git a/EnvelopeGenerator.CommonServices/EnvelopeGenerator.CommonServices.vbproj b/EnvelopeGenerator.CommonServices/EnvelopeGenerator.CommonServices.vbproj
index 33142ec8..c74cf276 100644
--- a/EnvelopeGenerator.CommonServices/EnvelopeGenerator.CommonServices.vbproj
+++ b/EnvelopeGenerator.CommonServices/EnvelopeGenerator.CommonServices.vbproj
@@ -563,6 +563,10 @@
{63e32615-0eca-42dc-96e3-91037324b7c7}
EnvelopeGenerator.Infrastructure
+
+ {211619f5-ae25-4ba5-a552-bacafe0632d3}
+ EnvelopeGenerator.PdfEditor
+
diff --git a/EnvelopeGenerator.CommonServices/Jobs/FinalizeDocument/PDFBurner.vb b/EnvelopeGenerator.CommonServices/Jobs/FinalizeDocument/PDFBurner.vb
index b2b1157d..50d6d0bf 100644
--- a/EnvelopeGenerator.CommonServices/Jobs/FinalizeDocument/PDFBurner.vb
+++ b/EnvelopeGenerator.CommonServices/Jobs/FinalizeDocument/PDFBurner.vb
@@ -5,6 +5,7 @@ Imports DigitalData.Modules.Logging
Imports GdPicture14
Imports Newtonsoft.Json
Imports EnvelopeGenerator.CommonServices.Jobs.FinalizeDocument.FinalizeDocumentExceptions
+Imports DevExpress.DataProcessing
Namespace Jobs.FinalizeDocument
Public Class PDFBurner
@@ -40,11 +41,13 @@ Namespace Jobs.FinalizeDocument
' Add annotation to PDF
For Each oJSON In pInstantJSONList
- If AddInstantJSONAnnotationToPDF(oJSON) = False Then
+ Try
+ AddInstantJSONAnnotationToPDF(oJSON)
+ Catch ex As Exception
Logger.Warn($"Error in AddInstantJSONAnnotationToPDF - oJson: ")
Logger.Warn(oJSON)
- Throw New BurnAnnotationException($"Adding Annotation failed")
- End If
+ Throw New BurnAnnotationException($"Adding Annotation failed", ex)
+ End Try
Next
oResult = Manager.BurnAnnotationsToPage(RemoveInitialAnnots:=True, VectorMode:=True)
If oResult <> GdPictureStatus.OK Then
@@ -65,125 +68,94 @@ Namespace Jobs.FinalizeDocument
End Using
End Function
- Private Function AddInstantJSONAnnotationToPDF(pInstantJSON As String) As Boolean
- Try
- Dim oAnnotationData = JsonConvert.DeserializeObject(Of AnnotationData)(pInstantJSON)
- oAnnotationData.annotations.Reverse()
+ Private Function AddInstantJSONAnnotationToPDF(pInstantJSON As String) As Void
+ Dim oAnnotationData = JsonConvert.DeserializeObject(Of AnnotationData)(pInstantJSON)
+ oAnnotationData.annotations.Reverse()
- Dim sigAnnotType = oAnnotationData.annotations.ElementAt(1).type
- Dim yPosOfSigAnnot = oAnnotationData.annotations.ElementAt(2).bbox.ElementAt(1) - 71.84002685546875 + 7
- Dim isSeal = True 'First element is signature seal
+ Dim sigAnnotType = oAnnotationData.annotations.ElementAt(1).type
+ Dim yPosOfSigAnnot = oAnnotationData.annotations.ElementAt(2).bbox.ElementAt(1) - 71.84002685546875 + 7
+ Dim isSeal = True 'First element is signature seal
- Dim formFieldIndex = 0
- For Each oAnnotation In oAnnotationData.annotations
- Logger.Debug("Adding AnnotationID: " + oAnnotation.id)
+ Dim formFieldIndex = 0
+ For Each oAnnotation In oAnnotationData.annotations
+ Logger.Debug("Adding AnnotationID: " + oAnnotation.id)
- Select Case oAnnotation.type
- Case ANNOTATION_TYPE_IMAGE
+ Select Case oAnnotation.type
+ Case ANNOTATION_TYPE_IMAGE
- If (isSeal) Then
- oAnnotation.bbox.Item(1) = yPosOfSigAnnot
- End If
+ If (isSeal) Then
+ oAnnotation.bbox.Item(1) = yPosOfSigAnnot
+ End If
- AddImageAnnotation(oAnnotation, oAnnotationData.attachments)
+ AddImageAnnotation(oAnnotation, oAnnotationData.attachments)
+ Exit Select
- Case ANNOTATION_TYPE_INK
- AddInkAnnotation(oAnnotation)
+ Case ANNOTATION_TYPE_INK
+ AddInkAnnotation(oAnnotation)
+ Exit Select
- Case ANNOTATION_TYPE_WIDGET
- 'Add form field values
- Dim formFieldValue = oAnnotationData.formFieldValues.FirstOrDefault(Function(fv) fv.name = oAnnotation.id)
- If formFieldValue IsNot Nothing AndAlso Not _pdfBurnerParams.IgnoredLabels.Contains(formFieldValue.value) Then
- AddFormFieldValue(oAnnotation, formFieldValue, formFieldIndex)
- formFieldIndex += 1
- End If
- End Select
+ Case ANNOTATION_TYPE_WIDGET
+ 'Add form field values
+ Dim formFieldValue = oAnnotationData.formFieldValues.FirstOrDefault(Function(fv) fv.name = oAnnotation.id)
+ If formFieldValue IsNot Nothing AndAlso Not _pdfBurnerParams.IgnoredLabels.Contains(formFieldValue.value) Then
+ AddFormFieldValue(oAnnotation, formFieldValue, formFieldIndex)
+ formFieldIndex += 1
+ End If
+ Exit Select
+ End Select
- isSeal = False
- Next
-
- Return True
- Catch ex As Exception
- Logger.Warn("Could not create annotation from InstantJSON")
- Logger.Error(ex)
- Return False
- End Try
+ isSeal = False
+ Next
End Function
- Private Function AddImageAnnotation(pAnnotation As Annotation, pAttachments As Dictionary(Of String, Attachment), Optional yOffset As Double = 0) As Boolean
- Try
- Dim oAttachment = pAttachments.Where(Function(a) a.Key = pAnnotation.imageAttachmentId).
- SingleOrDefault()
+ Private Function AddImageAnnotation(pAnnotation As Annotation, pAttachments As Dictionary(Of String, Attachment), Optional yOffset As Double = 0) As Void
+ Dim oAttachment = pAttachments.Where(Function(a) a.Key = pAnnotation.imageAttachmentId).
+ SingleOrDefault()
- ' Convert pixels to Inches
- Dim oBounds = pAnnotation.bbox.Select(AddressOf ToInches).ToList()
+ ' Convert pixels to Inches
+ Dim oBounds = pAnnotation.bbox.Select(AddressOf ToInches).ToList()
- Dim oX = oBounds.Item(0)
- Dim oY = oBounds.Item(1) + yOffset
- Dim oWidth = oBounds.Item(2)
- Dim oHeight = oBounds.Item(3)
+ Dim oX = oBounds.Item(0)
+ Dim oY = oBounds.Item(1) + yOffset
+ Dim oWidth = oBounds.Item(2)
+ Dim oHeight = oBounds.Item(3)
- Manager.SelectPage(pAnnotation.pageIndex + 1)
- Manager.AddEmbeddedImageAnnotFromBase64(oAttachment.Value.binary, oX, oY, oWidth, oHeight)
-
- Return True
- Catch ex As Exception
- Logger.Warn("Could not add image annotation!")
- Logger.Error(ex)
-
- Return False
- End Try
+ Manager.SelectPage(pAnnotation.pageIndex + 1)
+ Manager.AddEmbeddedImageAnnotFromBase64(oAttachment.Value.binary, oX, oY, oWidth, oHeight)
End Function
- Private Function AddInkAnnotation(pAnnotation As Annotation) As Boolean
- Try
- Dim oSegments = pAnnotation.lines.points
- Dim oColor = ColorTranslator.FromHtml(pAnnotation.strokeColor)
- Manager.SelectPage(pAnnotation.pageIndex + 1)
+ Private Function AddInkAnnotation(pAnnotation As Annotation) As Void
+ Dim oSegments = pAnnotation.lines.points
+ Dim oColor = ColorTranslator.FromHtml(pAnnotation.strokeColor)
+ Manager.SelectPage(pAnnotation.pageIndex + 1)
- For Each oSegment As List(Of List(Of Single)) In oSegments
- Dim oPoints = oSegment.
- Select(AddressOf ToPointF).
- ToArray()
-
- Manager.AddFreeHandAnnot(oColor, oPoints)
- Next
-
- Return True
- Catch ex As Exception
- Logger.Warn("Could not add image annotation!")
- Logger.Error(ex)
-
- Return False
- End Try
+ For Each oSegment As List(Of List(Of Single)) In oSegments
+ Dim oPoints = oSegment.
+ Select(AddressOf ToPointF).
+ ToArray()
+ Manager.AddFreeHandAnnot(oColor, oPoints)
+ Next
End Function
- Private Function AddFormFieldValue(pAnnotation As Annotation, formFieldValue As FormFieldValue, index As Integer) As Boolean
- Try
- ' Convert pixels to Inches
- Dim oBounds = pAnnotation.bbox.Select(AddressOf ToInches).ToList()
+ Private Function AddFormFieldValue(pAnnotation As Annotation, formFieldValue As FormFieldValue, index As Integer) As Void
+ ' Convert pixels to Inches
+ Dim oBounds = pAnnotation.bbox.Select(AddressOf ToInches).ToList()
- Dim oX = oBounds.Item(0)
- Dim oY = oBounds.Item(1) + _pdfBurnerParams.YOffset * index + _pdfBurnerParams.TopMargin
- Dim oWidth = oBounds.Item(2)
- Dim oHeight = oBounds.Item(3)
+ Dim oX = oBounds.Item(0)
+ Dim oY = oBounds.Item(1) + _pdfBurnerParams.YOffset * index + _pdfBurnerParams.TopMargin
+ Dim oWidth = oBounds.Item(2)
+ Dim oHeight = oBounds.Item(3)
- Manager.SelectPage(pAnnotation.pageIndex + 1)
- ' Add the text annotation
- Dim ant = Manager.AddTextAnnot(oX, oY, oWidth, oHeight, formFieldValue.value)
+ Manager.SelectPage(pAnnotation.pageIndex + 1)
+ ' Add the text annotation
+ Dim ant = Manager.AddTextAnnot(oX, oY, oWidth, oHeight, formFieldValue.value)
- ' Set the font properties
- ant.FontName = _pdfBurnerParams.FontName
- ant.FontSize = _pdfBurnerParams.FontSize
- ant.FontStyle = _pdfBurnerParams.FontStyle
- Manager.SaveAnnotationsToPage()
- Return True
- Catch ex As Exception
- Logger.Warn("Could not add image annotation!")
- Logger.Error(ex)
- Return False
- End Try
+ ' Set the font properties
+ ant.FontName = _pdfBurnerParams.FontName
+ ant.FontSize = _pdfBurnerParams.FontSize
+ ant.FontStyle = _pdfBurnerParams.FontStyle
+ Manager.SaveAnnotationsToPage()
End Function
Private Function ToPointF(pPoints As List(Of Single)) As PointF