''
'' This code is part of Document Solutions for PDF .NET demos.
'' Copyright (c) MESCIUS inc. All rights reserved.
''
Imports System
Imports System.IO
Imports System.Drawing
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Text
Imports GrapeCity.Documents.Pdf.AcroForms
Imports GrapeCity.Documents.Pdf.Annotations
Imports GrapeCity.Documents.Pdf.Actions
Public Class SetFieldFormat
Public Function CreatePDF(ByVal stream As Stream) As Integer
Dim doc = New GcPdfDocument()
Dim p = doc.NewPage()
Dim g = p.Graphics
g.DrawString("SetPercentFormat", StandardFonts.Helvetica, 14, Color.Black, New PointF(10, 10))
AddPercentFormat(p, New RectangleF(10, 40, 60, 20), 0.2F, 2, TextField.NumberSeparatorStyle.Comma)
AddPercentFormat(p, New RectangleF(80, 40, 60, 20), 1, 0, TextField.NumberSeparatorStyle.CommaDot)
AddPercentFormat(p, New RectangleF(150, 40, 60, 20), -0.1F, 3, TextField.NumberSeparatorStyle.DotComma)
AddPercentFormat(p, New RectangleF(220, 40, 60, 20), 2.0F, 2, TextField.NumberSeparatorStyle.Dot)
AddPercentFormat(p, New RectangleF(290, 40, 60, 20), 0.5F, 2, TextField.NumberSeparatorStyle.ApostropheDot)
g.DrawString("SetNumberFormat", StandardFonts.Helvetica, 14, Color.Black, New PointF(10, 70))
AddNumberFormat(p, New RectangleF(10, 100, 60, 20), 12345.67F, 2, TextField.NumberSeparatorStyle.Comma,
TextField.NumberNegativeStyle.None, Nothing, TextField.CurrencySymbolStyle.BeforeWithSpace)
AddNumberFormat(p, New RectangleF(80, 100, 60, 20), -12.7F, 0, TextField.NumberSeparatorStyle.CommaDot,
TextField.NumberNegativeStyle.UseRedText, "R", TextField.CurrencySymbolStyle.BeforeWithSpace)
AddNumberFormat(p, New RectangleF(150, 100, 60, 20), 0.123F, 3, TextField.NumberSeparatorStyle.DotComma,
TextField.NumberNegativeStyle.ShowParentheses, ChrW(&H20AC), TextField.CurrencySymbolStyle.AfterWithSpace)
AddNumberFormat(p, New RectangleF(220, 100, 60, 20), 12345, 2, TextField.NumberSeparatorStyle.Dot,
TextField.NumberNegativeStyle.ShowParentheses, "TL", TextField.CurrencySymbolStyle.AfterNoSpace)
AddNumberFormat(p, New RectangleF(290, 100, 60, 20), -5674.344F, 2, TextField.NumberSeparatorStyle.ApostropheDot,
TextField.NumberNegativeStyle.ShowParentheses Or TextField.NumberNegativeStyle.UseRedText, "TL", TextField.CurrencySymbolStyle.AfterWithSpace)
g.DrawString("SetDateFormat", StandardFonts.Helvetica, 14, Color.Black, New PointF(10, 130))
AddDateFormat(p, New RectangleF(10, 160, 60, 20), Util.TimeNow(), "dd-mm-yyyy")
AddDateFormat(p, New RectangleF(80, 160, 60, 20), Util.TimeNow(), "d-m-yy")
AddDateFormat(p, New RectangleF(150, 160, 60, 20), Util.TimeNow(), "yyyy/mmmm/dd")
g.DrawString("SetTimeFormat", StandardFonts.Helvetica, 14, Color.Black, New PointF(10, 200))
Dim dt = New DateTime(2000, 1, 1, 1, 2, 3)
AddTimeFormat(p, New RectangleF(10, 230, 60, 20), dt, "HH:MM")
AddTimeFormat(p, New RectangleF(80, 230, 60, 20), dt, "h:MM tt")
AddTimeFormat(p, New RectangleF(150, 230, 60, 20), dt, "HH:MM:ss")
g.DrawString("Special Format", StandardFonts.Helvetica, 14, Color.Black, New PointF(10, 270))
AddSpecialFormat(p, New RectangleF(10, 300, 60, 20), "35004", TextField.SpecialFormat.ZipCode)
AddSpecialFormat(p, New RectangleF(80, 300, 60, 20), "84606-6580", TextField.SpecialFormat.ZipCode4)
AddSpecialFormat(p, New RectangleF(150, 300, 60, 20), "(123) 456-7890", TextField.SpecialFormat.Phone)
AddSpecialFormat(p, New RectangleF(220, 300, 60, 20), "123-45-6789", TextField.SpecialFormat.SSN)
'' Done:
doc.Save(stream)
Return doc.Pages.Count
End Function
Private Shared Function AddPercentFormat(p As Page,
rect As RectangleF,
v As Single,
decimalPlaces As Integer,
separatorStyle As TextField.NumberSeparatorStyle) As TextField
Dim result = New TextField()
p.Doc.AcroForm.Fields.Add(result)
result.Widget.Page = p
result.Widget.Rect = rect
result.Widget.Border.Width = 1
result.SetPercentValue(v, decimalPlaces, separatorStyle)
Return result
End Function
Private Shared Function AddNumberFormat(p As Page,
rect As RectangleF,
v As Single,
decimalPlaces As Integer,
separatorStyle As TextField.NumberSeparatorStyle,
negativeStyle As TextField.NumberNegativeStyle,
currencySymbol As String,
currencySymbolStyle As TextField.CurrencySymbolStyle) As TextField
Dim result = New TextField()
p.Doc.AcroForm.Fields.Add(result)
result.Widget.Page = p
result.Widget.Rect = rect
result.Widget.Border.Width = 1
result.Widget.Justification = VariableTextJustification.RightJustified
result.SetNumberValue(v, decimalPlaces, separatorStyle, negativeStyle, currencySymbol, currencySymbolStyle)
Return result
End Function
Private Shared Function AddDateFormat(p As Page,
rect As RectangleF,
v As DateTime,
format As String) As TextField
Dim result = New TextField()
p.Doc.AcroForm.Fields.Add(result)
result.Widget.Page = p
result.Widget.Rect = rect
result.Widget.Border.Width = 1
result.SetDateValue(v, format)
Return result
End Function
Private Shared Function AddTimeFormat(p As Page,
rect As RectangleF,
v As DateTime,
format As String) As TextField
Dim result = New TextField()
p.Doc.AcroForm.Fields.Add(result)
result.Widget.Page = p
result.Widget.Rect = rect
result.Widget.Border.Width = 1
result.SetTimeValue(v, format)
Return result
End Function
Private Shared Function AddSpecialFormat(p As Page,
rect As RectangleF,
v As String,
format As TextField.SpecialFormat) As TextField
Dim result = New TextField()
p.Doc.AcroForm.Fields.Add(result)
result.Widget.Page = p
result.Widget.Rect = rect
result.Widget.Border.Width = 1
result.SetSpecialFormatValue(v, format)
Return result
End Function
End Class