Avatar of fruitloopy
fruitloopy
 asked on

VB.NET - Print to centre middle of page

I have a Windows Forms Application that sends a couple of lines of text, specifically a customer name and current date + 1 month to a printer. So far I have managed to get it to print in the middle of the page but I need it to print in the middle centre. I mean not just centred page width but also centred page height.
Here's my code so far:
Friend TextToBePrinted As String

Dim print = MessageBox.Show("Would you like to print a retain slip to attach to the computer?", "Print retain slip", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
                If print = Windows.Forms.DialogResult.Yes Then
                    TextToBePrinted = Form1.txtRetainName.Text & vbCrLf & Date.Now.AddMonths(1)
                    Dim prn As New Printing.PrintDocument
                    Dim printer As String = "HP LaserJet P3010 Series UPD PCL 6"
                    Using (prn)
                        prn.PrinterSettings.PrinterName = printer
                        AddHandler prn.PrintPage, _
            AddressOf Me.PrintPageHandler
                        prn.Print()
                        RemoveHandler prn.PrintPage, _
                           AddressOf Me.PrintPageHandler
                    End Using
                End If

Private Sub PrintPageHandler(ByVal sender As Object, _
       ByVal args As Printing.PrintPageEventArgs)
        'Dim myFont As New Font("Arial", 22, FontStyle.Bold)
        'args.Graphics.DrawString(TextToBePrinted, _
        '   New Font(myFont, FontStyle.Regular), _
        '   Brushes.Black, 50, 50)
        Dim sngCenterPage As Single
        Static fntHeadingFont As New Font("Arial", 22, FontStyle.Bold)
        sngCenterPage = Convert.ToSingle(args.PageBounds.Width / 2 - args.Graphics.MeasureString _
                                         (Form1.txtRetainName.Text & vbCrLf & Date.Now.AddMonths(1), fntHeadingFont).Width / 2)
        '()
        args.Graphics.DrawString(Form1.txtRetainName.Text & vbCrLf & Date.Now.AddMonths(1), fntHeadingFont, Brushes.Black, sngCenterPage, 2)
    End Sub

Open in new window

This works fine as it centres it in the middle at the top of the page but I need it in the middle at the centre of the page
Visual Basic.NET.NET Programming

Avatar of undefined
Last Comment
fruitloopy

8/22/2022 - Mon
ASKER CERTIFIED SOLUTION
fruitloopy

THIS SOLUTION ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
GET A PERSONALIZED SOLUTION
Ask your own question & get feedback from real experts
Find out why thousands trust the EE community with their toughest problems.
Experts Exchange is like having an extremely knowledgeable team sitting and waiting for your call. Couldn't do my job half as well as I do without it!
James Murphy