refactor(PdfBurner): update BurnAnnotsToPDF to add form field

This commit is contained in:
tekh 2025-10-28 09:09:53 +01:00
parent ef28bbaaf1
commit 8ad7c37261

View File

@ -6,6 +6,7 @@ Imports DigitalData.Core.Abstraction.Application.Repository
Imports DigitalData.Core.Abstractions
Imports DigitalData.Modules.Base
Imports DigitalData.Modules.Logging
Imports DocumentFormat.OpenXml.Drawing.Diagrams
Imports EnvelopeGenerator.CommonServices.Jobs.FinalizeDocument.FinalizeDocumentExceptions
Imports EnvelopeGenerator.Domain.Entities
Imports EnvelopeGenerator.PdfEditor
@ -52,6 +53,19 @@ Namespace Jobs.FinalizeDocument
Using doc As Pdf(Of MemoryStream, MemoryStream) = Pdf.FromMemory(pSourceBuffer)
Return doc.Background(elements).ExportStream().ToArray()
End Using
For Each element In elements
Dim x = ToInches(element.Left)
Dim y = ToInches(element.Top)
For Each annot In element.Annotations
If annot.Type = AnnotationType.FormField Then
AddFormFieldValue(x, y, 100, 180, element.Page, annot.Value)
End If
Next
Next
End Function
Public Function BurnInstantJSONAnnotsToPDF(pSourceBuffer As Byte(), pInstantJSONList As List(Of String)) As Byte()
@ -151,6 +165,18 @@ Namespace Jobs.FinalizeDocument
Next
End Sub
Private Sub AddFormFieldValue(x As Double, y As Double, width As Double, height As Double, page As Integer, value As String)
Manager.SelectPage(page + 1)
' Add the text annotation
Dim ant = Manager.AddTextAnnot(x, y, width, height, value)
' Set the font properties
ant.FontName = _pdfBurnerParams.FontName
ant.FontSize = _pdfBurnerParams.FontSize
ant.FontStyle = _pdfBurnerParams.FontStyle
Manager.SaveAnnotationsToPage()
End Sub
Private Sub AddFormFieldValue(pAnnotation As Annotation, formFieldValue As FormFieldValue)
Dim ffIndex As Integer = EGName.Index(pAnnotation.egName)
@ -194,6 +220,7 @@ Namespace Jobs.FinalizeDocument
Public Const Image As String = "pspdfkit/image"
Public Const Ink As String = "pspdfkit/ink"
Public Const Widget As String = "pspdfkit/widget"
Public Const FormField As String = "pspdfkit/form-field-value"
End Class
Friend Class AnnotationData