Compare commits
4 Commits
b87ebead42
...
d6e3ff3875
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d6e3ff3875 | ||
|
|
4bd178d856 | ||
|
|
2b7cd4a209 | ||
|
|
89e6903c0b |
@@ -1,20 +1,18 @@
|
||||
Imports DigitalData.Modules.Base
|
||||
|
||||
Public Class EmailTemplate
|
||||
Inherits BaseModel
|
||||
|
||||
Private _firstBodyTemplate As List(Of String)
|
||||
Private _DocumentReceivedBodyTemplate As List(Of String)
|
||||
Private _DocumentSignedBodyTemplate As List(Of String)
|
||||
Private _DocumentCompletedBodyTemplate As List(Of String)
|
||||
|
||||
Private _replaceDictionary As Dictionary(Of String, String)
|
||||
|
||||
Public Sub New(pState As State)
|
||||
MyBase.New(pState)
|
||||
|
||||
InitTemplate()
|
||||
Public Sub New()
|
||||
InitTemplates()
|
||||
End Sub
|
||||
|
||||
Private Sub InitTemplate()
|
||||
_firstBodyTemplate = New List(Of String) From {
|
||||
Private Sub InitTemplates()
|
||||
_DocumentReceivedBodyTemplate = New List(Of String) From {
|
||||
"Guten Tag, <NAME_RECEIVER>,",
|
||||
"",
|
||||
"<NAME_SENDER> hat Ihnen ein Dokument zum <SIGNATURE_TYPE> gesendet.",
|
||||
@@ -26,6 +24,24 @@ Public Class EmailTemplate
|
||||
"Mit freundlichen Grüßen",
|
||||
"<NAME_SENDER>"
|
||||
}
|
||||
|
||||
_DocumentSignedBodyTemplate = New List(Of String) From {
|
||||
"Guten Tag, <NAME_RECEIVER>",
|
||||
"",
|
||||
"Ihre Unterschrift auf dem Dokument <DOCUMENT_TITLE> wurde verarbeitet.",
|
||||
"",
|
||||
"Mit freundlichen Grüßen",
|
||||
"<NAME_SENDER>"
|
||||
}
|
||||
|
||||
_DocumentCompletedBodyTemplate = New List(Of String) From {
|
||||
"Guten Tag, <NAME_RECEIVER>",
|
||||
"",
|
||||
"Das Dokument <DOCUMENT_TITLE> wurde von allen Beteiligten unterschrieben.",
|
||||
"",
|
||||
"Mit freundlichen Grüßen",
|
||||
"<NAME_SENDER>"
|
||||
}
|
||||
End Sub
|
||||
|
||||
Private Sub InitDictionary(pEmailData As EmailData)
|
||||
@@ -35,17 +51,30 @@ Public Class EmailTemplate
|
||||
{"<SIGNATURE_TYPE>", "signieren"},
|
||||
{"<LINK_TO_DOCUMENT>", pEmailData.SignatureLink},
|
||||
{"<LINK_TO_DOCUMENT_TEXT>", $"{pEmailData.SignatureLink.Truncate(40)}.."},
|
||||
{"<DOCUMENT_TITLE>", pEmailData.EmailSubject},
|
||||
{"<MESSAGE>", pEmailData.Message}
|
||||
}
|
||||
End Sub
|
||||
|
||||
Public Sub FillEmailBody(pEmailData As EmailData)
|
||||
Public Sub FillDocumentReceivedEmailBody(pEmailData As EmailData)
|
||||
FillEmailBody(pEmailData, _DocumentReceivedBodyTemplate)
|
||||
End Sub
|
||||
|
||||
Public Sub FillDocumentSignedEmailBody(pEmailData As EmailData)
|
||||
FillEmailBody(pEmailData, _DocumentSignedBodyTemplate)
|
||||
End Sub
|
||||
|
||||
Public Sub FillDocumentCompletedEmailBody(pEmailData As EmailData)
|
||||
FillEmailBody(pEmailData, _DocumentCompletedBodyTemplate)
|
||||
End Sub
|
||||
|
||||
Public Sub FillEmailBody(pEmailData As EmailData, pTemplate As List(Of String))
|
||||
|
||||
InitDictionary(pEmailData)
|
||||
|
||||
Dim resultBody As String = ""
|
||||
|
||||
For Each lineItem As String In _firstBodyTemplate
|
||||
For Each lineItem As String In pTemplate
|
||||
Dim oLineValue As String = lineItem
|
||||
For Each dictItem As KeyValuePair(Of String, String) In _replaceDictionary
|
||||
If oLineValue.Contains(dictItem.Key) Then
|
||||
|
||||
@@ -23,8 +23,8 @@ Public Class EnvelopeEditorController
|
||||
MyBase.New(pState)
|
||||
|
||||
Envelope = pEnvelope
|
||||
Envelope.Documents = DocumentModel.List(pEnvelope.Id)
|
||||
Envelope.Receivers = ReceiverModel.ListEnvelopeReceivers(pEnvelope.Id)
|
||||
Envelope.Documents = DocumentModel.List(pEnvelope.Id).ToList()
|
||||
Envelope.Receivers = ReceiverModel.ListEnvelopeReceivers(pEnvelope.Id).ToList()
|
||||
|
||||
Thumbnail = New Thumbnail(pState.LogConfig)
|
||||
End Sub
|
||||
@@ -46,8 +46,8 @@ Public Class EnvelopeEditorController
|
||||
.SignatureLink = Helpers.GetEnvelopeURL(State.DbConfig.SignatureHost, Envelope.Uuid, receiverItem.Signature)
|
||||
}
|
||||
|
||||
Dim oTemplate As New EmailTemplate(State)
|
||||
oTemplate.FillEmailBody(oEmailData)
|
||||
Dim oTemplate As New EmailTemplate()
|
||||
oTemplate.FillDocumentReceivedEmailBody(oEmailData)
|
||||
|
||||
If EmailModel.Insert(oEmailData) = False Then
|
||||
Logger.Error("EMail data could not be inserted.")
|
||||
|
||||
30
EnvelopeGenerator.Form/frmEnvelopeEditor.Designer.vb
generated
30
EnvelopeGenerator.Form/frmEnvelopeEditor.Designer.vb
generated
@@ -66,14 +66,14 @@ Partial Public Class frmEnvelopeEditor
|
||||
Me.EnvelopeReceiverBindingSource = New System.Windows.Forms.BindingSource(Me.components)
|
||||
Me.ViewReceivers = New DevExpress.XtraGrid.Views.Grid.GridView()
|
||||
Me.colColor = New DevExpress.XtraGrid.Columns.GridColumn()
|
||||
Me.RepositoryItemPictureEdit2 = New DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit()
|
||||
Me.RepositoryItemColorEdit1 = New DevExpress.XtraEditors.Repository.RepositoryItemColorEdit()
|
||||
Me.colEmail = New DevExpress.XtraGrid.Columns.GridColumn()
|
||||
Me.RepositoryItemEmailEdit = New DevExpress.XtraEditors.Repository.RepositoryItemTextEdit()
|
||||
Me.colName = New DevExpress.XtraGrid.Columns.GridColumn()
|
||||
Me.RepositoryItemPictureEdit1 = New DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit()
|
||||
Me.RepositoryItemColorPickEdit1 = New DevExpress.XtraEditors.Repository.RepositoryItemColorPickEdit()
|
||||
Me.RepositoryItemColorEdit1 = New DevExpress.XtraEditors.Repository.RepositoryItemColorEdit()
|
||||
Me.RepositoryItemImageEdit1 = New DevExpress.XtraEditors.Repository.RepositoryItemImageEdit()
|
||||
Me.RepositoryItemPictureEdit2 = New DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit()
|
||||
Me.LayoutControlGroup2 = New DevExpress.XtraLayout.LayoutControlGroup()
|
||||
Me.LayoutControlGroup3 = New DevExpress.XtraLayout.LayoutControlGroup()
|
||||
Me.LayoutControlItem2 = New DevExpress.XtraLayout.LayoutControlItem()
|
||||
@@ -115,12 +115,12 @@ Partial Public Class frmEnvelopeEditor
|
||||
CType(Me.GridReceivers, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.EnvelopeReceiverBindingSource, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.ViewReceivers, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.RepositoryItemPictureEdit2, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.RepositoryItemColorEdit1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.RepositoryItemEmailEdit, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.RepositoryItemPictureEdit1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.RepositoryItemColorPickEdit1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.RepositoryItemColorEdit1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.RepositoryItemImageEdit1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.RepositoryItemPictureEdit2, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.LayoutControlGroup2, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.LayoutControlGroup3, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.LayoutControlItem2, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
@@ -413,10 +413,11 @@ Partial Public Class frmEnvelopeEditor
|
||||
Me.colColor.Name = "colColor"
|
||||
Me.colColor.OptionsColumn.AllowSort = DevExpress.Utils.DefaultBoolean.[False]
|
||||
'
|
||||
'RepositoryItemPictureEdit2
|
||||
'RepositoryItemColorEdit1
|
||||
'
|
||||
Me.RepositoryItemPictureEdit2.Name = "RepositoryItemPictureEdit2"
|
||||
Me.RepositoryItemPictureEdit2.SvgImageSize = New System.Drawing.Size(16, 16)
|
||||
resources.ApplyResources(Me.RepositoryItemColorEdit1, "RepositoryItemColorEdit1")
|
||||
Me.RepositoryItemColorEdit1.Buttons.AddRange(New DevExpress.XtraEditors.Controls.EditorButton() {New DevExpress.XtraEditors.Controls.EditorButton(CType(resources.GetObject("RepositoryItemColorEdit1.Buttons"), DevExpress.XtraEditors.Controls.ButtonPredefines))})
|
||||
Me.RepositoryItemColorEdit1.Name = "RepositoryItemColorEdit1"
|
||||
'
|
||||
'colEmail
|
||||
'
|
||||
@@ -451,18 +452,17 @@ Partial Public Class frmEnvelopeEditor
|
||||
Me.RepositoryItemColorPickEdit1.ReadOnly = True
|
||||
Me.RepositoryItemColorPickEdit1.ShowDropDown = DevExpress.XtraEditors.Controls.ShowDropDown.Never
|
||||
'
|
||||
'RepositoryItemColorEdit1
|
||||
'
|
||||
resources.ApplyResources(Me.RepositoryItemColorEdit1, "RepositoryItemColorEdit1")
|
||||
Me.RepositoryItemColorEdit1.Buttons.AddRange(New DevExpress.XtraEditors.Controls.EditorButton() {New DevExpress.XtraEditors.Controls.EditorButton(CType(resources.GetObject("RepositoryItemColorEdit1.Buttons"), DevExpress.XtraEditors.Controls.ButtonPredefines))})
|
||||
Me.RepositoryItemColorEdit1.Name = "RepositoryItemColorEdit1"
|
||||
'
|
||||
'RepositoryItemImageEdit1
|
||||
'
|
||||
resources.ApplyResources(Me.RepositoryItemImageEdit1, "RepositoryItemImageEdit1")
|
||||
Me.RepositoryItemImageEdit1.Buttons.AddRange(New DevExpress.XtraEditors.Controls.EditorButton() {New DevExpress.XtraEditors.Controls.EditorButton(CType(resources.GetObject("RepositoryItemImageEdit1.Buttons"), DevExpress.XtraEditors.Controls.ButtonPredefines))})
|
||||
Me.RepositoryItemImageEdit1.Name = "RepositoryItemImageEdit1"
|
||||
'
|
||||
'RepositoryItemPictureEdit2
|
||||
'
|
||||
Me.RepositoryItemPictureEdit2.Name = "RepositoryItemPictureEdit2"
|
||||
Me.RepositoryItemPictureEdit2.SvgImageSize = New System.Drawing.Size(16, 16)
|
||||
'
|
||||
'LayoutControlGroup2
|
||||
'
|
||||
Me.LayoutControlGroup2.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.[True]
|
||||
@@ -609,12 +609,12 @@ Partial Public Class frmEnvelopeEditor
|
||||
CType(Me.GridReceivers, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.EnvelopeReceiverBindingSource, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.ViewReceivers, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.RepositoryItemPictureEdit2, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.RepositoryItemColorEdit1, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.RepositoryItemEmailEdit, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.RepositoryItemPictureEdit1, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.RepositoryItemColorPickEdit1, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.RepositoryItemColorEdit1, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.RepositoryItemImageEdit1, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.RepositoryItemPictureEdit2, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.LayoutControlGroup2, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.LayoutControlGroup3, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.LayoutControlItem2, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
|
||||
@@ -447,7 +447,7 @@
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<metadata name="EnvelopeReceiverBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>338, 17</value>
|
||||
<value>17, 95</value>
|
||||
</metadata>
|
||||
<data name="GridReceivers.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>14, 35</value>
|
||||
@@ -787,13 +787,13 @@
|
||||
<value>0</value>
|
||||
</data>
|
||||
<metadata name="FrmEditorBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>801, 17</value>
|
||||
<value>17, 173</value>
|
||||
</metadata>
|
||||
<metadata name="EnvelopeDocumentBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>564, 17</value>
|
||||
<value>17, 134</value>
|
||||
</metadata>
|
||||
<metadata name="OpenFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>196, 17</value>
|
||||
<value>17, 56</value>
|
||||
</metadata>
|
||||
<data name="OpenFileDialog1.Filter" xml:space="preserve">
|
||||
<value>PDF Files|*.pdf</value>
|
||||
@@ -972,11 +972,11 @@
|
||||
<data name=">>colColor.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>RepositoryItemPictureEdit2.Name" xml:space="preserve">
|
||||
<value>RepositoryItemPictureEdit2</value>
|
||||
<data name=">>RepositoryItemColorEdit1.Name" xml:space="preserve">
|
||||
<value>RepositoryItemColorEdit1</value>
|
||||
</data>
|
||||
<data name=">>RepositoryItemPictureEdit2.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
<data name=">>RepositoryItemColorEdit1.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.Repository.RepositoryItemColorEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>colEmail.Name" xml:space="preserve">
|
||||
<value>colEmail</value>
|
||||
@@ -1008,18 +1008,18 @@
|
||||
<data name=">>RepositoryItemColorPickEdit1.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.Repository.RepositoryItemColorPickEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>RepositoryItemColorEdit1.Name" xml:space="preserve">
|
||||
<value>RepositoryItemColorEdit1</value>
|
||||
</data>
|
||||
<data name=">>RepositoryItemColorEdit1.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.Repository.RepositoryItemColorEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>RepositoryItemImageEdit1.Name" xml:space="preserve">
|
||||
<value>RepositoryItemImageEdit1</value>
|
||||
</data>
|
||||
<data name=">>RepositoryItemImageEdit1.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.Repository.RepositoryItemImageEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>RepositoryItemPictureEdit2.Name" xml:space="preserve">
|
||||
<value>RepositoryItemPictureEdit2</value>
|
||||
</data>
|
||||
<data name=">>RepositoryItemPictureEdit2.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>LayoutControlGroup2.Name" xml:space="preserve">
|
||||
<value>LayoutControlGroup2</value>
|
||||
</data>
|
||||
|
||||
@@ -61,6 +61,10 @@
|
||||
<Reference Include="DigitalData.Controls.DocumentViewer">
|
||||
<HintPath>..\..\DDMonorepo\Controls.DocumentViewer\bin\Debug\DigitalData.Controls.DocumentViewer.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Base, Version=1.3.6.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\DDModules\Base\bin\Debug\DigitalData.Modules.Base.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Database">
|
||||
<HintPath>..\..\DDModules\Database\bin\Debug\DigitalData.Modules.Database.dll</HintPath>
|
||||
</Reference>
|
||||
@@ -119,6 +123,7 @@
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<Compile Include="My Project\AssemblyInfo.vb" />
|
||||
<Compile Include="PDFBurner.vb" />
|
||||
<EmbeddedResource Include="frmFieldEditor.resx">
|
||||
<DependentUpon>frmFieldEditor.vb</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
||||
162
EnvelopeGenerator.Test/PDFBurner.vb
Normal file
162
EnvelopeGenerator.Test/PDFBurner.vb
Normal file
@@ -0,0 +1,162 @@
|
||||
Imports DevExpress.Pdf
|
||||
Imports DigitalData.Modules.Base
|
||||
Imports DigitalData.Modules.Logging
|
||||
Imports EnvelopeGenerator.PDFBurner
|
||||
Imports GdPicture14
|
||||
Imports Newtonsoft.Json
|
||||
|
||||
Public Class PDFBurner
|
||||
Inherits BaseClass
|
||||
|
||||
Private ReadOnly LicenseKey As String
|
||||
Private ReadOnly Manager As AnnotationManager
|
||||
Private ReadOnly LicenseManager As LicenseManager
|
||||
|
||||
Private Const ANNOTATION_TYPE_IMAGE = "pspdfkit/image"
|
||||
Private Const ANNOTATION_TYPE_INK = "pspdfkit/ink"
|
||||
|
||||
Public Sub New(pLogConfig As LogConfig, pGDPictureLicenseKey As String)
|
||||
MyBase.New(pLogConfig)
|
||||
|
||||
LicenseKey = pGDPictureLicenseKey
|
||||
LicenseManager = New LicenseManager()
|
||||
LicenseManager.RegisterKEY(pGDPictureLicenseKey)
|
||||
|
||||
Manager = New AnnotationManager()
|
||||
End Sub
|
||||
|
||||
Public Function BurnInstantJSONAnnotationsToPDF(pSourcePath As String, pInstantJSONList As List(Of String), pDestinationPath As String) As Boolean
|
||||
If Manager.InitFromFile(pSourcePath) <> GdPictureStatus.OK Then
|
||||
Logger.Warn("Could not open file [{0}] for burning.", pSourcePath)
|
||||
Return False
|
||||
End If
|
||||
|
||||
For Each oJSON In pInstantJSONList
|
||||
If AddInstantJSONAnnotationToPDF(oJSON) = False Then
|
||||
Logger.Warn("Adding Annotation failed. Exiting")
|
||||
Return False
|
||||
End If
|
||||
Next
|
||||
|
||||
Try
|
||||
Manager.BurnAnnotationsToPage(RemoveInitialAnnots:=True, VectorMode:=True)
|
||||
Manager.SaveDocumentToPDF(pDestinationPath)
|
||||
Manager.Close()
|
||||
|
||||
Return True
|
||||
Catch ex As Exception
|
||||
Logger.Warn("Could not burn and save annotations to file [{0}]!", pDestinationPath)
|
||||
Logger.Error(ex)
|
||||
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Function AddInstantJSONAnnotationToPDF(pInstantJSON As String) As Boolean
|
||||
Try
|
||||
Dim oAnnotationData = JsonConvert.DeserializeObject(Of AnnotationData)(pInstantJSON)
|
||||
|
||||
For Each oAnnotation In oAnnotationData.annotations
|
||||
Select Case oAnnotation.type
|
||||
Case ANNOTATION_TYPE_IMAGE
|
||||
AddImageAnnotation(oAnnotation, oAnnotationData.attachments)
|
||||
Case ANNOTATION_TYPE_INK
|
||||
AddInkAnnotation(oAnnotation)
|
||||
End Select
|
||||
Next
|
||||
|
||||
Return True
|
||||
Catch ex As Exception
|
||||
Logger.Warn("Could not create annotation from InstantJSON")
|
||||
Logger.Error(ex)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Function AddImageAnnotation(pAnnotation As Annotation, pAttachments As Dictionary(Of String, Attachment)) As Boolean
|
||||
Try
|
||||
Dim oAttachment = pAttachments.Where(Function(a) a.Key = pAnnotation.imageAttachmentId).
|
||||
SingleOrDefault()
|
||||
|
||||
' Convert pixels to Inches
|
||||
Dim oBounds = pAnnotation.bbox.Select(AddressOf ToInches).ToList()
|
||||
|
||||
Dim oX = oBounds.Item(0)
|
||||
Dim oY = oBounds.Item(1)
|
||||
Dim oWidth = oBounds.Item(2)
|
||||
Dim oHeight = oBounds.Item(3)
|
||||
|
||||
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
|
||||
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)
|
||||
|
||||
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
|
||||
|
||||
End Function
|
||||
|
||||
Private Function ToPointF(pPoints As List(Of Single)) As PointF
|
||||
Dim oPoints = pPoints.Select(AddressOf ToInches).ToList()
|
||||
Return New PointF(oPoints.Item(0), oPoints.Item(1))
|
||||
End Function
|
||||
|
||||
Private Function ToInches(pValue As Double) As Double
|
||||
Return pValue / 72
|
||||
End Function
|
||||
|
||||
Private Function ToInches(pValue As Single) As Single
|
||||
Return pValue / 72
|
||||
End Function
|
||||
|
||||
Friend Class AnnotationData
|
||||
Public Property annotations As List(Of Annotation)
|
||||
Public Property attachments As Dictionary(Of String, Attachment)
|
||||
End Class
|
||||
|
||||
Friend 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
|
||||
Public Property lines As Lines
|
||||
Public Property pageIndex As Integer
|
||||
Public Property strokeColor As String
|
||||
End Class
|
||||
|
||||
Friend Class Lines
|
||||
Public Property points As List(Of List(Of List(Of Single)))
|
||||
End Class
|
||||
|
||||
Friend Class Attachment
|
||||
Public Property binary As String
|
||||
Public Property contentType As String
|
||||
End Class
|
||||
End Class
|
||||
52
EnvelopeGenerator.Test/frmFinalizePDF.Designer.vb
generated
52
EnvelopeGenerator.Test/frmFinalizePDF.Designer.vb
generated
@@ -1,9 +1,9 @@
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
|
||||
Partial Class frmFinalizePDF
|
||||
Inherits System.Windows.Forms.Form
|
||||
|
||||
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
<System.Diagnostics.DebuggerNonUserCode()>
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
@@ -20,20 +20,20 @@ Partial Class frmFinalizePDF
|
||||
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
|
||||
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
|
||||
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
<System.Diagnostics.DebuggerStepThrough()>
|
||||
Private Sub InitializeComponent()
|
||||
Me.txtReceiver = New System.Windows.Forms.TextBox()
|
||||
Me.txtEnvelope = New System.Windows.Forms.TextBox()
|
||||
Me.Label1 = New System.Windows.Forms.Label()
|
||||
Me.Label2 = New System.Windows.Forms.Label()
|
||||
Me.Button1 = New System.Windows.Forms.Button()
|
||||
Me.PictureBox1 = New System.Windows.Forms.PictureBox()
|
||||
CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.Button2 = New System.Windows.Forms.Button()
|
||||
Me.txtResult = New System.Windows.Forms.TextBox()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'txtReceiver
|
||||
'
|
||||
Me.txtReceiver.Location = New System.Drawing.Point(57, 65)
|
||||
Me.txtReceiver.Location = New System.Drawing.Point(15, 65)
|
||||
Me.txtReceiver.Name = "txtReceiver"
|
||||
Me.txtReceiver.Size = New System.Drawing.Size(100, 20)
|
||||
Me.txtReceiver.TabIndex = 0
|
||||
@@ -41,7 +41,7 @@ Partial Class frmFinalizePDF
|
||||
'
|
||||
'txtEnvelope
|
||||
'
|
||||
Me.txtEnvelope.Location = New System.Drawing.Point(57, 23)
|
||||
Me.txtEnvelope.Location = New System.Drawing.Point(15, 23)
|
||||
Me.txtEnvelope.Name = "txtEnvelope"
|
||||
Me.txtEnvelope.Size = New System.Drawing.Size(100, 20)
|
||||
Me.txtEnvelope.TabIndex = 0
|
||||
@@ -50,7 +50,7 @@ Partial Class frmFinalizePDF
|
||||
'Label1
|
||||
'
|
||||
Me.Label1.AutoSize = True
|
||||
Me.Label1.Location = New System.Drawing.Point(54, 9)
|
||||
Me.Label1.Location = New System.Drawing.Point(12, 9)
|
||||
Me.Label1.Name = "Label1"
|
||||
Me.Label1.Size = New System.Drawing.Size(61, 13)
|
||||
Me.Label1.TabIndex = 1
|
||||
@@ -59,7 +59,7 @@ Partial Class frmFinalizePDF
|
||||
'Label2
|
||||
'
|
||||
Me.Label2.AutoSize = True
|
||||
Me.Label2.Location = New System.Drawing.Point(54, 46)
|
||||
Me.Label2.Location = New System.Drawing.Point(12, 46)
|
||||
Me.Label2.Name = "Label2"
|
||||
Me.Label2.Size = New System.Drawing.Size(59, 13)
|
||||
Me.Label2.TabIndex = 1
|
||||
@@ -67,27 +67,37 @@ Partial Class frmFinalizePDF
|
||||
'
|
||||
'Button1
|
||||
'
|
||||
Me.Button1.Location = New System.Drawing.Point(57, 102)
|
||||
Me.Button1.Location = New System.Drawing.Point(15, 102)
|
||||
Me.Button1.Name = "Button1"
|
||||
Me.Button1.Size = New System.Drawing.Size(75, 23)
|
||||
Me.Button1.Size = New System.Drawing.Size(166, 23)
|
||||
Me.Button1.TabIndex = 2
|
||||
Me.Button1.Text = "Energie!"
|
||||
Me.Button1.Text = "Write Annotations to PDF"
|
||||
Me.Button1.UseVisualStyleBackColor = True
|
||||
'
|
||||
'PictureBox1
|
||||
'Button2
|
||||
'
|
||||
Me.PictureBox1.Location = New System.Drawing.Point(384, 92)
|
||||
Me.PictureBox1.Name = "PictureBox1"
|
||||
Me.PictureBox1.Size = New System.Drawing.Size(341, 170)
|
||||
Me.PictureBox1.TabIndex = 3
|
||||
Me.PictureBox1.TabStop = False
|
||||
Me.Button2.Location = New System.Drawing.Point(15, 131)
|
||||
Me.Button2.Name = "Button2"
|
||||
Me.Button2.Size = New System.Drawing.Size(166, 23)
|
||||
Me.Button2.TabIndex = 3
|
||||
Me.Button2.Text = "Merge Json"
|
||||
Me.Button2.UseVisualStyleBackColor = True
|
||||
'
|
||||
'TextBox1
|
||||
'
|
||||
Me.txtResult.Location = New System.Drawing.Point(333, 12)
|
||||
Me.txtResult.Multiline = True
|
||||
Me.txtResult.Name = "TextBox1"
|
||||
Me.txtResult.Size = New System.Drawing.Size(455, 426)
|
||||
Me.txtResult.TabIndex = 4
|
||||
'
|
||||
'frmFinalizePDF
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.ClientSize = New System.Drawing.Size(800, 450)
|
||||
Me.Controls.Add(Me.PictureBox1)
|
||||
Me.Controls.Add(Me.txtResult)
|
||||
Me.Controls.Add(Me.Button2)
|
||||
Me.Controls.Add(Me.Button1)
|
||||
Me.Controls.Add(Me.Label2)
|
||||
Me.Controls.Add(Me.Label1)
|
||||
@@ -95,7 +105,6 @@ Partial Class frmFinalizePDF
|
||||
Me.Controls.Add(Me.txtReceiver)
|
||||
Me.Name = "frmFinalizePDF"
|
||||
Me.Text = "frmFinalizePDF"
|
||||
CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
@@ -106,5 +115,6 @@ Partial Class frmFinalizePDF
|
||||
Friend WithEvents Label1 As Label
|
||||
Friend WithEvents Label2 As Label
|
||||
Friend WithEvents Button1 As Button
|
||||
Friend WithEvents PictureBox1 As PictureBox
|
||||
Friend WithEvents Button2 As Button
|
||||
Friend WithEvents txtResult As TextBox
|
||||
End Class
|
||||
|
||||
@@ -4,6 +4,7 @@ Imports DigitalData.Modules.Database
|
||||
Imports DigitalData.Modules.Logging
|
||||
Imports GdPicture14
|
||||
Imports Newtonsoft.Json
|
||||
Imports Newtonsoft.Json.Linq
|
||||
|
||||
Public Class frmFinalizePDF
|
||||
Private Const CONNECTIONSTRING = "Server=sDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=+bk8oAbbQP1AzoHtvZUbd+Mbok2f8Fl4miEx1qssJ5yEaEWoQJ9prg4L14fURpPnqi1WMNs9fE4=;"
|
||||
@@ -13,84 +14,70 @@ Public Class frmFinalizePDF
|
||||
|
||||
Private Viewer As GdPicture14.GdViewer
|
||||
Private Manager As AnnotationManager
|
||||
|
||||
Private PDFBurner As PDFBurner
|
||||
|
||||
|
||||
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))
|
||||
|
||||
PDFBurner = New PDFBurner(LogConfig, "21182889975216572111813147150675976632")
|
||||
|
||||
Manager = New AnnotationManager()
|
||||
Dim oLicense = New LicenseManager()
|
||||
oLicense.RegisterKEY("21182889975216572111813147150675976632")
|
||||
End Sub
|
||||
|
||||
Private Function LoadAnnotationData() As String
|
||||
Private Function LoadAnnotationDataForReceiver() 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 LoadAnnotationDataForEnvelope() As DataTable
|
||||
Dim oSql = $"SELECT VALUE FROM [TBSIG_DOCUMENT_STATUS] WHERE ENVELOPE_ID = {txtEnvelope.Text}"
|
||||
Return Database.GetDatatable(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 oTable = LoadAnnotationDataForEnvelope()
|
||||
Dim oJsonList = oTable.Rows.
|
||||
Cast(Of DataRow).
|
||||
Select(Function(r As DataRow) r.Item("VALUE").ToString()).
|
||||
ToList()
|
||||
|
||||
Dim oConverter = JsonConvert.DeserializeObject(Of AnnotationData)(oAnnotationData)
|
||||
PDFBurner.BurnInstantJSONAnnotationsToPDF(oDocumentPath, oJsonList, $"{oDocumentPath}.burned.pdf")
|
||||
End Sub
|
||||
|
||||
Dim oImages = oConverter.annotations.Where(Function(a) a.type = "pspdfkit/image").ToList()
|
||||
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
|
||||
Try
|
||||
Dim oTable = LoadAnnotationDataForEnvelope()
|
||||
Dim oJsonList = oTable.Rows.
|
||||
Cast(Of DataRow).
|
||||
Select(Function(r As DataRow) r.Item("VALUE").ToString()).
|
||||
Select(Function(s As String) JObject.Parse(s)).
|
||||
ToList()
|
||||
|
||||
Manager.InitFromFile(Application.StartupPath & "/source.pdf")
|
||||
Dim oJObject1 = oJsonList.First()
|
||||
Dim oJObject2 = oJsonList.ElementAt(1)
|
||||
|
||||
For Each oImage In oImages
|
||||
Dim oAttachment = oConverter.attachments.Where(Function(a) a.Key = oImage.imageAttachmentId).Single()
|
||||
Dim oBytes = Convert.FromBase64String(oAttachment.Value.binary)
|
||||
oJObject1.Merge(oJObject2)
|
||||
|
||||
txtResult.Text = oJObject1.ToString()
|
||||
|
||||
|
||||
'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
|
||||
Catch ex As Exception
|
||||
|
||||
Manager.AddEmbeddedImageAnnotFromBase64(oAttachment.Value.binary, x, y, w, h)
|
||||
|
||||
|
||||
|
||||
Next
|
||||
|
||||
Manager.SaveDocumentToPDF("pdf.pdf")
|
||||
Manager.Close()
|
||||
End Try
|
||||
End Sub
|
||||
End Class
|
||||
192
EnvelopeGenerator.Web/Classes/PDFBurner.cs
Normal file
192
EnvelopeGenerator.Web/Classes/PDFBurner.cs
Normal file
@@ -0,0 +1,192 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using DigitalData.Modules.Base;
|
||||
using DigitalData.Modules.Logging;
|
||||
using GdPicture14;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace EnvelopeGenerator.Web.Classes
|
||||
{
|
||||
public partial class PDFBurner : BaseClass
|
||||
{
|
||||
|
||||
private readonly string LicenseKey;
|
||||
private readonly AnnotationManager Manager;
|
||||
private readonly LicenseManager LicenseManager;
|
||||
|
||||
private const string ANNOTATION_TYPE_IMAGE = "pspdfkit/image";
|
||||
private const string ANNOTATION_TYPE_INK = "pspdfkit/ink";
|
||||
|
||||
public PDFBurner(LogConfig pLogConfig, string pGDPictureLicenseKey) : base(pLogConfig)
|
||||
{
|
||||
|
||||
LicenseKey = pGDPictureLicenseKey;
|
||||
LicenseManager = new LicenseManager();
|
||||
LicenseManager.RegisterKEY(pGDPictureLicenseKey);
|
||||
|
||||
Manager = new AnnotationManager();
|
||||
}
|
||||
|
||||
public bool BurnInstantJSONAnnotationsToPDF(string pSourcePath, List<string> pInstantJSONList, string pDestinationPath)
|
||||
{
|
||||
if (Manager.InitFromFile(pSourcePath) != GdPictureStatus.OK)
|
||||
{
|
||||
Logger.Warn("Could not open file [{0}] for burning.", pSourcePath);
|
||||
return false;
|
||||
}
|
||||
|
||||
foreach (var oJSON in pInstantJSONList)
|
||||
{
|
||||
if (AddInstantJSONAnnotationToPDF(oJSON) == false)
|
||||
{
|
||||
Logger.Warn("Adding Annotation failed. Exiting");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
Manager.BurnAnnotationsToPage(RemoveInitialAnnots: true, VectorMode: true);
|
||||
Manager.SaveDocumentToPDF(pDestinationPath);
|
||||
Manager.Close();
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Warn("Could not burn and save annotations to file [{0}]!", pDestinationPath);
|
||||
Logger.Error(ex);
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private bool AddInstantJSONAnnotationToPDF(string pInstantJSON)
|
||||
{
|
||||
try
|
||||
{
|
||||
var oAnnotationData = JsonConvert.DeserializeObject<AnnotationData>(pInstantJSON);
|
||||
|
||||
foreach (Annotation oAnnotation in oAnnotationData.annotations)
|
||||
{
|
||||
switch (oAnnotation.type)
|
||||
{
|
||||
case ANNOTATION_TYPE_IMAGE:
|
||||
{
|
||||
AddImageAnnotation(oAnnotation, oAnnotationData.attachments);
|
||||
break;
|
||||
}
|
||||
case ANNOTATION_TYPE_INK:
|
||||
{
|
||||
AddInkAnnotation(oAnnotation);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Warn("Could not create annotation from InstantJSON");
|
||||
Logger.Error(ex);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private bool AddImageAnnotation(Annotation pAnnotation, Dictionary<string, Attachment> pAttachments)
|
||||
{
|
||||
try
|
||||
{
|
||||
var oAttachment = pAttachments.Where(a => (a.Key ?? "") == (pAnnotation.imageAttachmentId ?? "")).SingleOrDefault();
|
||||
|
||||
// Convert pixels to Inches
|
||||
var oBounds = pAnnotation.bbox.Select(ToInches).ToList();
|
||||
|
||||
float oX = oBounds[0];
|
||||
float oY = oBounds[1];
|
||||
float oWidth = oBounds[2];
|
||||
float oHeight = oBounds[3];
|
||||
|
||||
Manager.AddEmbeddedImageAnnotFromBase64(oAttachment.Value.binary, oX, oY, oWidth, oHeight);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Warn("Could not add image annotation!");
|
||||
Logger.Error(ex);
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private bool AddInkAnnotation(Annotation pAnnotation)
|
||||
{
|
||||
try
|
||||
{
|
||||
var oSegments = pAnnotation.lines.points;
|
||||
var oColor = ColorTranslator.FromHtml(pAnnotation.strokeColor);
|
||||
Manager.SelectPage(pAnnotation.pageIndex);
|
||||
|
||||
foreach (List<List<float>> oSegment in oSegments)
|
||||
{
|
||||
var oPoints = oSegment.Select(ToPointF).ToArray();
|
||||
Manager.AddFreeHandAnnot(oColor, oPoints);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Warn("Could not add image annotation!");
|
||||
Logger.Error(ex);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private PointF ToPointF(List<float> pPoints)
|
||||
{
|
||||
var oPoints = pPoints.Select(ToInches).ToList();
|
||||
return new PointF(oPoints[0], oPoints[1]);
|
||||
}
|
||||
|
||||
private float ToInches(float pValue)
|
||||
{
|
||||
return pValue / 72f;
|
||||
}
|
||||
|
||||
internal partial class AnnotationData
|
||||
{
|
||||
public List<Annotation> annotations { get; set; }
|
||||
public Dictionary<string, Attachment> attachments { get; set; }
|
||||
}
|
||||
|
||||
internal partial class Annotation
|
||||
{
|
||||
public string id { get; set; }
|
||||
public List<float> bbox { get; set; }
|
||||
public string type { get; set; }
|
||||
public bool isSignature { get; set; }
|
||||
public string imageAttachmentId { get; set; }
|
||||
public Lines lines { get; set; }
|
||||
public int pageIndex { get; set; }
|
||||
public string strokeColor { get; set; }
|
||||
}
|
||||
|
||||
internal partial class Lines
|
||||
{
|
||||
public List<List<List<float>>> points { get; set; }
|
||||
}
|
||||
|
||||
internal partial class Attachment
|
||||
{
|
||||
public string binary { get; set; }
|
||||
public string contentType { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageReference Include="NLog" Version="5.2.5" />
|
||||
<PackageReference Include="System.Data.SqlClient" Version="4.8.5" />
|
||||
<PackageReference Include="System.Drawing.Common" Version="7.0.0" />
|
||||
@@ -32,6 +33,9 @@
|
||||
<Reference Include="DigitalData.Modules.Logging">
|
||||
<HintPath>..\..\DDModules\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14">
|
||||
<HintPath>D:\ProgramFiles\GdPicture.NET 14\Redist\GdPicture.NET (.NET Framework 4.5)\GdPicture.NET.14.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
@{
|
||||
ViewData["Title"] = "Privacy Policy";
|
||||
ViewData["Title"] = "Dokument unterschrieben";
|
||||
}
|
||||
|
||||
<div id="page-success" class="container p-5">
|
||||
@@ -10,11 +10,11 @@
|
||||
<path d="M15.354 3.354a.5.5 0 0 0-.708-.708L8 9.293 5.354 6.646a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0l7-7z" />
|
||||
</svg>
|
||||
</div>
|
||||
<h1>Umschlag erfolgreich signiert!</h1>
|
||||
<h1>Dokument erfolgreich signiert!</h1>
|
||||
</header>
|
||||
|
||||
<section class="text-center">
|
||||
<p>Sie haben das Dokument erfolgreich signiert. Im Anschluss erhalten Sie eine schriftliche Bestätigung.</p>
|
||||
<p>Sie haben das Dokument signiert. Im Anschluss erhalten Sie eine schriftliche Bestätigung.</p>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
@@ -20,18 +20,5 @@
|
||||
}
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<a href="#" id="url" target="_blank">Show image</a>
|
||||
<img src="#" id="img" />
|
||||
</section>
|
||||
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
const anno = new Annotation()
|
||||
anno.createAnnotationFrameBlob("Deine Mudda", 200, 80).then(url => document.getElementById("img").src = url)
|
||||
})
|
||||
</script>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
@{
|
||||
ViewData["Title"] = "Privacy Policy";
|
||||
ViewData["Title"] = "Dokument unterschreiben";
|
||||
}
|
||||
|
||||
<script>
|
||||
|
||||
@@ -64,8 +64,7 @@
|
||||
id: id,
|
||||
pageIndex: pageIndex,
|
||||
formFieldName: id,
|
||||
boundingBox: new PSPDFKit.Geometry.Rect({ width, height, top, left }),
|
||||
backgroundColor: new PSPDFKit.Color({ r: 225, g: 29, b: 72 })
|
||||
boundingBox: new PSPDFKit.Geometry.Rect({ width, height, top, left })
|
||||
})
|
||||
|
||||
return annotation
|
||||
|
||||
@@ -185,19 +185,6 @@ class App {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Flatten the annotations and save the document to disk
|
||||
try {
|
||||
const buffer = await this.Instance.exportPDF({ flatten: true });
|
||||
const postDocumentResult = await this.Network.postDocument(this.envelopeKey, this.currentDocument.id, buffer);
|
||||
|
||||
if (postDocumentResult === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,13 +0,0 @@
|
||||
/*!
|
||||
* PSPDFKit for Web 2023.4.6 (https://pspdfkit.com/web)
|
||||
*
|
||||
* Copyright (c) 2016-2023 PSPDFKit GmbH. All rights reserved.
|
||||
*
|
||||
* THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
|
||||
* AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE PSPDFKIT LICENSE AGREEMENT.
|
||||
* UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
|
||||
* This notice may not be removed from this file.
|
||||
*
|
||||
* PSPDFKit uses several open source third-party components: https://pspdfkit.com/acknowledgements/web/
|
||||
*/
|
||||
(self.webpackChunkPSPDFKit=self.webpackChunkPSPDFKit||[]).push([[3005],{12282:()=>{Intl.PluralRules&&"function"==typeof Intl.PluralRules.__addLocaleData&&Intl.PluralRules.__addLocaleData({data:{cs:{categories:{cardinal:["one","few","many","other"],ordinal:["other"]},fn:function(a,e){var l=String(a).split("."),t=l[0],n=!l[1];return e?"other":1==a&&n?"one":t>=2&&t<=4&&n?"few":n?"other":"many"}}},availableLocales:["cs"]})}}]);
|
||||
@@ -0,0 +1,13 @@
|
||||
/*!
|
||||
* PSPDFKit for Web 2023.5.2 (https://pspdfkit.com/web)
|
||||
*
|
||||
* Copyright (c) 2016-2023 PSPDFKit GmbH. All rights reserved.
|
||||
*
|
||||
* THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
|
||||
* AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE PSPDFKIT LICENSE AGREEMENT.
|
||||
* UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
|
||||
* This notice may not be removed from this file.
|
||||
*
|
||||
* PSPDFKit uses several open source third-party components: https://pspdfkit.com/acknowledgements/web/
|
||||
*/
|
||||
(self.webpackChunkPSPDFKit=self.webpackChunkPSPDFKit||[]).push([[3005],{12282:()=>{Intl.PluralRules&&"function"==typeof Intl.PluralRules.__addLocaleData&&Intl.PluralRules.__addLocaleData({data:{cs:{categories:{cardinal:["one","few","many","other"],ordinal:["other"]},fn:function(a,e){var l=String(a).split("."),t=l[0],n=!l[1];return e?"other":1==a&&n?"one":t>=2&&t<=4&&n?"few":n?"other":"many"}}},availableLocales:["cs"]})}}]);
|
||||
@@ -0,0 +1,13 @@
|
||||
/*!
|
||||
* PSPDFKit for Web 2023.5.2 (https://pspdfkit.com/web)
|
||||
*
|
||||
* Copyright (c) 2016-2023 PSPDFKit GmbH. All rights reserved.
|
||||
*
|
||||
* THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
|
||||
* AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE PSPDFKIT LICENSE AGREEMENT.
|
||||
* UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
|
||||
* This notice may not be removed from this file.
|
||||
*
|
||||
* PSPDFKit uses several open source third-party components: https://pspdfkit.com/acknowledgements/web/
|
||||
*/
|
||||
(self.webpackChunkPSPDFKit=self.webpackChunkPSPDFKit||[]).push([[7050],{26873:()=>{Intl.PluralRules&&"function"==typeof Intl.PluralRules.__addLocaleData&&Intl.PluralRules.__addLocaleData({data:{cy:{categories:{cardinal:["zero","one","two","few","many","other"],ordinal:["zero","one","two","few","many","other"]},fn:function(e,a){return a?0==e||7==e||8==e||9==e?"zero":1==e?"one":2==e?"two":3==e||4==e?"few":5==e||6==e?"many":"other":0==e?"zero":1==e?"one":2==e?"two":3==e?"few":6==e?"many":"other"}}},availableLocales:["cy"]})}}]);
|
||||
@@ -1,13 +0,0 @@
|
||||
/*!
|
||||
* PSPDFKit for Web 2023.4.6 (https://pspdfkit.com/web)
|
||||
*
|
||||
* Copyright (c) 2016-2023 PSPDFKit GmbH. All rights reserved.
|
||||
*
|
||||
* THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
|
||||
* AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE PSPDFKIT LICENSE AGREEMENT.
|
||||
* UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
|
||||
* This notice may not be removed from this file.
|
||||
*
|
||||
* PSPDFKit uses several open source third-party components: https://pspdfkit.com/acknowledgements/web/
|
||||
*/
|
||||
(self.webpackChunkPSPDFKit=self.webpackChunkPSPDFKit||[]).push([[7050],{26873:()=>{Intl.PluralRules&&"function"==typeof Intl.PluralRules.__addLocaleData&&Intl.PluralRules.__addLocaleData({data:{cy:{categories:{cardinal:["zero","one","two","few","many","other"],ordinal:["zero","one","two","few","many","other"]},fn:function(e,a){return a?0==e||7==e||8==e||9==e?"zero":1==e?"one":2==e?"two":3==e||4==e?"few":5==e||6==e?"many":"other":0==e?"zero":1==e?"one":2==e?"two":3==e?"few":6==e?"many":"other"}}},availableLocales:["cy"]})}}]);
|
||||
@@ -0,0 +1,13 @@
|
||||
/*!
|
||||
* PSPDFKit for Web 2023.5.2 (https://pspdfkit.com/web)
|
||||
*
|
||||
* Copyright (c) 2016-2023 PSPDFKit GmbH. All rights reserved.
|
||||
*
|
||||
* THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
|
||||
* AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE PSPDFKIT LICENSE AGREEMENT.
|
||||
* UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
|
||||
* This notice may not be removed from this file.
|
||||
*
|
||||
* PSPDFKit uses several open source third-party components: https://pspdfkit.com/acknowledgements/web/
|
||||
*/
|
||||
(self.webpackChunkPSPDFKit=self.webpackChunkPSPDFKit||[]).push([[752],{5407:()=>{Intl.PluralRules&&"function"==typeof Intl.PluralRules.__addLocaleData&&Intl.PluralRules.__addLocaleData({data:{da:{categories:{cardinal:["one","other"],ordinal:["other"]},fn:function(a,l){var e=String(a).split("."),t=e[0],n=Number(e[0])==a;return l||1!=a&&(n||0!=t&&1!=t)?"other":"one"}}},availableLocales:["da"]})}}]);
|
||||
@@ -1,13 +0,0 @@
|
||||
/*!
|
||||
* PSPDFKit for Web 2023.4.6 (https://pspdfkit.com/web)
|
||||
*
|
||||
* Copyright (c) 2016-2023 PSPDFKit GmbH. All rights reserved.
|
||||
*
|
||||
* THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
|
||||
* AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE PSPDFKIT LICENSE AGREEMENT.
|
||||
* UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
|
||||
* This notice may not be removed from this file.
|
||||
*
|
||||
* PSPDFKit uses several open source third-party components: https://pspdfkit.com/acknowledgements/web/
|
||||
*/
|
||||
(self.webpackChunkPSPDFKit=self.webpackChunkPSPDFKit||[]).push([[752],{5407:()=>{Intl.PluralRules&&"function"==typeof Intl.PluralRules.__addLocaleData&&Intl.PluralRules.__addLocaleData({data:{da:{categories:{cardinal:["one","other"],ordinal:["other"]},fn:function(a,l){var e=String(a).split("."),t=e[0],n=Number(e[0])==a;return l||1!=a&&(n||0!=t&&1!=t)?"other":"one"}}},availableLocales:["da"]})}}]);
|
||||
@@ -0,0 +1,13 @@
|
||||
/*!
|
||||
* PSPDFKit for Web 2023.5.2 (https://pspdfkit.com/web)
|
||||
*
|
||||
* Copyright (c) 2016-2023 PSPDFKit GmbH. All rights reserved.
|
||||
*
|
||||
* THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
|
||||
* AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE PSPDFKIT LICENSE AGREEMENT.
|
||||
* UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
|
||||
* This notice may not be removed from this file.
|
||||
*
|
||||
* PSPDFKit uses several open source third-party components: https://pspdfkit.com/acknowledgements/web/
|
||||
*/
|
||||
(self.webpackChunkPSPDFKit=self.webpackChunkPSPDFKit||[]).push([[8869],{60333:()=>{Intl.PluralRules&&"function"==typeof Intl.PluralRules.__addLocaleData&&Intl.PluralRules.__addLocaleData({data:{de:{categories:{cardinal:["one","other"],ordinal:["other"]},fn:function(a,e){var l=!String(a).split(".")[1];return e?"other":1==a&&l?"one":"other"}}},availableLocales:["de"]})}}]);
|
||||
@@ -1,13 +0,0 @@
|
||||
/*!
|
||||
* PSPDFKit for Web 2023.4.6 (https://pspdfkit.com/web)
|
||||
*
|
||||
* Copyright (c) 2016-2023 PSPDFKit GmbH. All rights reserved.
|
||||
*
|
||||
* THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
|
||||
* AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE PSPDFKIT LICENSE AGREEMENT.
|
||||
* UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
|
||||
* This notice may not be removed from this file.
|
||||
*
|
||||
* PSPDFKit uses several open source third-party components: https://pspdfkit.com/acknowledgements/web/
|
||||
*/
|
||||
(self.webpackChunkPSPDFKit=self.webpackChunkPSPDFKit||[]).push([[8869],{60333:()=>{Intl.PluralRules&&"function"==typeof Intl.PluralRules.__addLocaleData&&Intl.PluralRules.__addLocaleData({data:{de:{categories:{cardinal:["one","other"],ordinal:["other"]},fn:function(a,e){var l=!String(a).split(".")[1];return e?"other":1==a&&l?"one":"other"}}},availableLocales:["de"]})}}]);
|
||||
@@ -0,0 +1,13 @@
|
||||
/*!
|
||||
* PSPDFKit for Web 2023.5.2 (https://pspdfkit.com/web)
|
||||
*
|
||||
* Copyright (c) 2016-2023 PSPDFKit GmbH. All rights reserved.
|
||||
*
|
||||
* THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
|
||||
* AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE PSPDFKIT LICENSE AGREEMENT.
|
||||
* UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
|
||||
* This notice may not be removed from this file.
|
||||
*
|
||||
* PSPDFKit uses several open source third-party components: https://pspdfkit.com/acknowledgements/web/
|
||||
*/
|
||||
(self.webpackChunkPSPDFKit=self.webpackChunkPSPDFKit||[]).push([[1882],{80056:()=>{Intl.PluralRules&&"function"==typeof Intl.PluralRules.__addLocaleData&&Intl.PluralRules.__addLocaleData({data:{el:{categories:{cardinal:["one","other"],ordinal:["other"]},fn:function(a,e){return e?"other":1==a?"one":"other"}}},availableLocales:["el"]})}}]);
|
||||
@@ -1,13 +0,0 @@
|
||||
/*!
|
||||
* PSPDFKit for Web 2023.4.6 (https://pspdfkit.com/web)
|
||||
*
|
||||
* Copyright (c) 2016-2023 PSPDFKit GmbH. All rights reserved.
|
||||
*
|
||||
* THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
|
||||
* AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE PSPDFKIT LICENSE AGREEMENT.
|
||||
* UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
|
||||
* This notice may not be removed from this file.
|
||||
*
|
||||
* PSPDFKit uses several open source third-party components: https://pspdfkit.com/acknowledgements/web/
|
||||
*/
|
||||
(self.webpackChunkPSPDFKit=self.webpackChunkPSPDFKit||[]).push([[1882],{80056:()=>{Intl.PluralRules&&"function"==typeof Intl.PluralRules.__addLocaleData&&Intl.PluralRules.__addLocaleData({data:{el:{categories:{cardinal:["one","other"],ordinal:["other"]},fn:function(a,e){return e?"other":1==a?"one":"other"}}},availableLocales:["el"]})}}]);
|
||||
@@ -0,0 +1,13 @@
|
||||
/*!
|
||||
* PSPDFKit for Web 2023.5.2 (https://pspdfkit.com/web)
|
||||
*
|
||||
* Copyright (c) 2016-2023 PSPDFKit GmbH. All rights reserved.
|
||||
*
|
||||
* THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
|
||||
* AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE PSPDFKIT LICENSE AGREEMENT.
|
||||
* UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
|
||||
* This notice may not be removed from this file.
|
||||
*
|
||||
* PSPDFKit uses several open source third-party components: https://pspdfkit.com/acknowledgements/web/
|
||||
*/
|
||||
(self.webpackChunkPSPDFKit=self.webpackChunkPSPDFKit||[]).push([[5014],{32778:()=>{Intl.PluralRules&&"function"==typeof Intl.PluralRules.__addLocaleData&&Intl.PluralRules.__addLocaleData({data:{en:{categories:{cardinal:["one","other"],ordinal:["one","two","few","other"]},fn:function(e,a){var l=String(e).split("."),t=!l[1],n=Number(l[0])==e,o=n&&l[0].slice(-1),r=n&&l[0].slice(-2);return a?1==o&&11!=r?"one":2==o&&12!=r?"two":3==o&&13!=r?"few":"other":1==e&&t?"one":"other"}}},availableLocales:["en"]})}}]);
|
||||
@@ -1,13 +0,0 @@
|
||||
/*!
|
||||
* PSPDFKit for Web 2023.4.6 (https://pspdfkit.com/web)
|
||||
*
|
||||
* Copyright (c) 2016-2023 PSPDFKit GmbH. All rights reserved.
|
||||
*
|
||||
* THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
|
||||
* AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE PSPDFKIT LICENSE AGREEMENT.
|
||||
* UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
|
||||
* This notice may not be removed from this file.
|
||||
*
|
||||
* PSPDFKit uses several open source third-party components: https://pspdfkit.com/acknowledgements/web/
|
||||
*/
|
||||
(self.webpackChunkPSPDFKit=self.webpackChunkPSPDFKit||[]).push([[5014],{32778:()=>{Intl.PluralRules&&"function"==typeof Intl.PluralRules.__addLocaleData&&Intl.PluralRules.__addLocaleData({data:{en:{categories:{cardinal:["one","other"],ordinal:["one","two","few","other"]},fn:function(e,a){var l=String(e).split("."),t=!l[1],n=Number(l[0])==e,o=n&&l[0].slice(-1),r=n&&l[0].slice(-2);return a?1==o&&11!=r?"one":2==o&&12!=r?"two":3==o&&13!=r?"few":"other":1==e&&t?"one":"other"}}},availableLocales:["en"]})}}]);
|
||||
@@ -1,13 +0,0 @@
|
||||
/*!
|
||||
* PSPDFKit for Web 2023.4.6 (https://pspdfkit.com/web)
|
||||
*
|
||||
* Copyright (c) 2016-2023 PSPDFKit GmbH. All rights reserved.
|
||||
*
|
||||
* THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
|
||||
* AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE PSPDFKIT LICENSE AGREEMENT.
|
||||
* UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
|
||||
* This notice may not be removed from this file.
|
||||
*
|
||||
* PSPDFKit uses several open source third-party components: https://pspdfkit.com/acknowledgements/web/
|
||||
*/
|
||||
(self.webpackChunkPSPDFKit=self.webpackChunkPSPDFKit||[]).push([[1252],{53802:()=>{Intl.PluralRules&&"function"==typeof Intl.PluralRules.__addLocaleData&&Intl.PluralRules.__addLocaleData({data:{es:{categories:{cardinal:["one","other"],ordinal:["other"]},fn:function(a,e){return e?"other":1==a?"one":"other"}}},availableLocales:["es"]})}}]);
|
||||
@@ -0,0 +1,13 @@
|
||||
/*!
|
||||
* PSPDFKit for Web 2023.5.2 (https://pspdfkit.com/web)
|
||||
*
|
||||
* Copyright (c) 2016-2023 PSPDFKit GmbH. All rights reserved.
|
||||
*
|
||||
* THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
|
||||
* AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE PSPDFKIT LICENSE AGREEMENT.
|
||||
* UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
|
||||
* This notice may not be removed from this file.
|
||||
*
|
||||
* PSPDFKit uses several open source third-party components: https://pspdfkit.com/acknowledgements/web/
|
||||
*/
|
||||
(self.webpackChunkPSPDFKit=self.webpackChunkPSPDFKit||[]).push([[1252],{53802:()=>{Intl.PluralRules&&"function"==typeof Intl.PluralRules.__addLocaleData&&Intl.PluralRules.__addLocaleData({data:{es:{categories:{cardinal:["one","other"],ordinal:["other"]},fn:function(a,e){return e?"other":1==a?"one":"other"}}},availableLocales:["es"]})}}]);
|
||||
@@ -1,13 +0,0 @@
|
||||
/*!
|
||||
* PSPDFKit for Web 2023.4.6 (https://pspdfkit.com/web)
|
||||
*
|
||||
* Copyright (c) 2016-2023 PSPDFKit GmbH. All rights reserved.
|
||||
*
|
||||
* THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
|
||||
* AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE PSPDFKIT LICENSE AGREEMENT.
|
||||
* UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
|
||||
* This notice may not be removed from this file.
|
||||
*
|
||||
* PSPDFKit uses several open source third-party components: https://pspdfkit.com/acknowledgements/web/
|
||||
*/
|
||||
(self.webpackChunkPSPDFKit=self.webpackChunkPSPDFKit||[]).push([[5528],{15857:()=>{Intl.PluralRules&&"function"==typeof Intl.PluralRules.__addLocaleData&&Intl.PluralRules.__addLocaleData({data:{fi:{categories:{cardinal:["one","other"],ordinal:["other"]},fn:function(a,l){var e=!String(a).split(".")[1];return l?"other":1==a&&e?"one":"other"}}},availableLocales:["fi"]})}}]);
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user