Solved

printpage event apparently not firing

Posted on 2007-11-21
4
435 Views
Last Modified: 2013-11-07
I am trying to programatically print a code generated image.  The graphics is populated and I can save the .bmp to disk and it is correct.  However, when I send it to the printer, I get a blank page.  Apparently this is occurning because the printpage event is not firing.
I say that the event is not firing because when I place        
objBitmap.Save("c:\testing.bmp")
in the Sub pd_PrintPage it does not happen.
Private objBitmap As New Bitmap(765, 800)
 
    Private Sub butPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butPrint.Click
        Try
            Dim objGraphics As Graphics
            Dim objFont As New Font("Arial", 12, FontStyle.Regular)
            objGraphics = Graphics.FromImage(objBitmap)
            objGraphics.DrawImage(objBitmap, 0, 0)
            objGraphics.DrawString(str1.ToString, objFont, Brushes.Black, 50, 50)
            objGraphics.DrawString(str2.ToString, objFont, Brushes.Black, 90, 100)
            objGraphics.DrawString(str3.ToString, objFont, Brushes.Black, 90, 240)
            Dim objPoint As Drawing.Point
            objPoint.X = "90"
            objPoint.Y = "200"
            objGraphics.DrawImageUnscaled(image1, objPoint)
            objGraphics.Save()
            Dim objDoc As New PrintDocument
            objDoc.PrinterSettings.PrinterName = prnName
            AddHandler objDoc.PrintPage, AddressOf Me.pd_PrintPage
            objDoc.Print()
            lblStatus.Text = "Printing Complete"
        Catch ex As Exception
            lblStatus.Text = ex.Message
        End Try
 
    End Sub
 
    Private Sub pd_PrintPage(ByVal sender As Object, ByVal ev As PrintPageEventArgs) _
        Handles objDoc.PrintPage
 
        ' Draw a picture.
        ev.Graphics.DrawImage(objBitmap, _
        ev.Graphics.VisibleClipBounds)
 
        ' Indicate that this is the last page to print.
        ev.HasMorePages = False
    End Sub

Open in new window

0
Comment
Question by:zane_o
  • 2
  • 2
4 Comments
 
LVL 38

Accepted Solution

by:
PaulHews earned 250 total points
ID: 20330503
You need to declare your PrintDocument at the form/class level:
 Private objBitmap As New Bitmap(765, 800)
    Private WithEvents objDoc As New PrintDocument
 
    Private Sub butPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
            
 
            Dim objGraphics As Graphics
            Dim objFont As New Font("Arial", 12, FontStyle.Regular)
            objGraphics = Graphics.FromImage(objBitmap)
            objGraphics.DrawImage(objBitmap, 0, 0)
            objGraphics.DrawString(str1.ToString, objFont, Brushes.Black, 50, 50)
            objGraphics.DrawString(str2.ToString, objFont, Brushes.Black, 90, 100)
            objGraphics.DrawString(str3.ToString, objFont, Brushes.Black, 90, 240)
            Dim objPoint As Drawing.Point
            objPoint.X = 90
            objPoint.Y = 200
            objGraphics.DrawImageUnscaled(image1, objPoint)
            objGraphics.Save()
            objDoc.PrinterSettings.PrinterName = prnName
            objDoc.Print()
            lblStatus.Text = "Printing Complete"
        Catch ex As Exception
            lblStatus.Text = ex.Message
        End Try
 
    End Sub
 
    Private Sub pd_PrintPage(ByVal sender As Object, ByVal ev As PrintPageEventArgs) _
        Handles objDoc.PrintPage
 
        ' Draw a picture.
        ev.Graphics.DrawImage(objBitmap, _
        ev.Graphics.VisibleClipBounds)
 
        ' Indicate that this is the last page to print.
        ev.HasMorePages = False
    End Sub

Open in new window

0
 
LVL 38

Expert Comment

by:PaulHews
ID: 20330727
One typo.
Private Sub butPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Should be:

Private Sub butPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butPrint.Click
0
 
LVL 6

Author Comment

by:zane_o
ID: 20331231
Sorry I didn't include this in the original post, but I have
    Private WithEvents objDoc As PrintDocument
in the code already.
0
 
LVL 6

Author Comment

by:zane_o
ID: 20331384
OK. That did the trick.  Thanks.
0

Featured Post

Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

In my previous article (http://www.experts-exchange.com/Programming/Languages/.NET/.NET_Framework_3.x/A_4362-Serialization-in-NET-1.html) we saw the basics of serialization and how types/objects can be serialized to Binary format. In this blog we wi…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…

832 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question