Examples / personalize / vbnet

Personalize

A complete, runnable vbnet program — 99 lines, shipped in your download.

Demonstrates Text

Same example, other languages: activex_cpp c cpp cpp_linux csharp delphi python

examples/vbnet/personalize/personalize.vb 99 lines
' personalize -- VB.NET port of examples\Vb6\personalize
Imports System
Imports LumasPdfSdk

Module modPersonalize
    Private errDel As TErrorProc

    Private Function U(ByVal v As Long) As UInteger
        Return CUInt(v And &HFFFFFFFFL)
    End Function

    Function AppPath() As String
        Return AppDomain.CurrentDomain.BaseDirectory.TrimEnd("\"c)
    End Function

    Public Function ErrProc(ByVal Data As IntPtr, ByVal ErrCode As Integer, ByVal ErrMessage As String, ByVal ErrType As Integer) As Integer
        Console.WriteLine(ErrMessage)
        Return -1
    End Function

    Sub Main()
        errDel = New TErrorProc(AddressOf ErrProc)
        Dim pdf As IntPtr = LumasPdf.pdfNewPDF()
        LumasPdf.pdfCreateNewPDFW(pdf, "")

        LumasPdf.pdfSetViewerPreferences(pdf, LumasPdfConsts.vpDisplayDocTitle, LumasPdfConsts.avNone)
        LumasPdf.pdfSetImportFlags(pdf, U(LumasPdfConsts.ifImportAll Or LumasPdfConsts.ifImportAsPage))
        If LumasPdf.pdfOpenImportFileW(pdf, AppPath() & "\taxform.pdf", LumasPdfConsts.ptOpen, "") < 0 Then
            LumasPdf.pdfDeletePDF(pdf)
            Return
        End If
        LumasPdf.pdfImportPDFFile(pdf, 1, 1.0, 1.0)

        LumasPdf.pdfEditPage(pdf, 1)
        LumasPdf.pdfSetFontW(pdf, "Courier", LumasPdfConsts.fsBold, 14.0, False, TCodepage.cp1252)
        LumasPdf.pdfWriteTextW(pdf, 72.5, 748.5, "X")
        LumasPdf.pdfWriteTextW(pdf, 74.0, 701.0, "Musterstadt")
        LumasPdf.pdfWriteTextW(pdf, 74.0, 677.0, "252/1062/3323")
        LumasPdf.pdfBeginContinueText(pdf, 74.0, 628.0)
        LumasPdf.pdfSetLeading(pdf, 24.0)
        LumasPdf.pdfSetCharacterSpacing(pdf, 5.8)
        LumasPdf.pdfAddContinueTextW(pdf, "Mustermann")
        LumasPdf.pdfAddContinueTextW(pdf, "Hermann")
        LumasPdf.pdfAddContinueTextW(pdf, "22021963keineKaufmann")
        ' ChrW, not Chr. Chr resolves its argument through the CURRENT
        ' ANSI codepage, and .NET 8 ships no CP1252 provider by default, so
        ' it throws "No data is available for encoding 1252" the moment this
        ' example is built against the NuGet package instead of .NET
        ' Framework 4.8. ChrW takes a Unicode code point directly. For every
        ' Chr(n) in this tree the two agree exactly: none used 128..159, the
        ' only range where CP1252 and Unicode differ (223 = U+00DF, "ss").
        LumasPdf.pdfAddContinueTextW(pdf, "Musterstra" & ChrW(223) & "e 145")
        LumasPdf.pdfAddContinueTextW(pdf, "12345Musterstadt")
        LumasPdf.pdfSetCharacterSpacing(pdf, 0.0)
        LumasPdf.pdfSetFontW(pdf, "Courier", LumasPdfConsts.fsBold, 10.0, False, TCodepage.cp1252)
        LumasPdf.pdfSetLeading(pdf, 48.0)
        LumasPdf.pdfAddContinueTextW(pdf, "04.05.1994")
        LumasPdf.pdfSetFontW(pdf, "Courier", LumasPdfConsts.fsBold, 14.0, False, TCodepage.cp1252)
        LumasPdf.pdfSetCharacterSpacing(pdf, 5.8)
        LumasPdf.pdfAddContinueTextW(pdf, "Sabine")
        LumasPdf.pdfSetLeading(pdf, 47.5)
        LumasPdf.pdfAddContinueTextW(pdf, "18121966 ev  Hausfrau")
        LumasPdf.pdfEndContinueText(pdf)
        LumasPdf.pdfWriteTextW(pdf, 72.5, 365.0, "X")
        LumasPdf.pdfWriteTextW(pdf, 396.0, 365.0, "X")
        LumasPdf.pdfBeginContinueText(pdf, 74.0, 316.0)
        LumasPdf.pdfSetLeading(pdf, 24.0)
        LumasPdf.pdfAddContinueTextW(pdf, "2346256780     76834560")
        LumasPdf.pdfAddContinueTextW(pdf, "Sparkasse Musterstadt")
        LumasPdf.pdfEndContinueText(pdf)
        LumasPdf.pdfWriteTextW(pdf, 72.5, 269.0, "X")
        LumasPdf.pdfSetCharacterSpacing(pdf, 0.0)
        LumasPdf.pdfSetFontW(pdf, "Courier", LumasPdfConsts.fsNone, 10.0, False, TCodepage.cp1252)
        LumasPdf.pdfWriteTextW(pdf, 53.0, 48.0, Now().ToString())
        LumasPdf.pdfSetFillColor(pdf, U(&HFF Or (&H66 << 8) Or (&H66 << 16)))
        LumasPdf.pdfSetFontW(pdf, "Helvetica", LumasPdfConsts.fsBold, 22.0, False, TCodepage.cp1252)
        LumasPdf.pdfWriteTextW(pdf, 340.0, 70.0, "www.dynaforms.de")
        LumasPdf.pdfSetLineWidth(pdf, 0.0)
        LumasPdf.pdfSetLinkHighlightMode(pdf, CInt(THighlightMode.hmPush))
        LumasPdf.pdfSetAnnotFlags(pdf, U(LumasPdfConsts.afReadOnly))
        LumasPdf.pdfWebLinkW(pdf, 340.0, 64.0, 204.0, 22.0, "http://www.dynaforms.de")
        LumasPdf.pdfEndPage(pdf)

        Dim outFile As String = AppPath() & "\out.pdf"
        If LumasPdf.pdfHaveOpenDoc(pdf) <> 0 Then
            LumasPdf.pdfSetOnErrorProc(pdf, IntPtr.Zero, Nothing)
            If LumasPdf.pdfOpenOutputFileW(pdf, outFile) = 0 Then
                LumasPdf.pdfDeletePDF(pdf)
                Return
            End If
            LumasPdf.pdfSetOnErrorProc(pdf, IntPtr.Zero, errDel)
        End If
        If LumasPdf.pdfCloseFile(pdf) <> 0 Then
            Console.WriteLine("PDF file """ & outFile & """ successfully created!")
        End If
        LumasPdf.pdfDeletePDF(pdf)
    End Sub
End Module

This file is in the SDK at examples/vbnet/personalize/personalize.vb. The build fails if this page and that file ever differ.