views:

592

answers:

1

I am trying to print (using a printer, on paper, not on a screen) lines and text, using the the function DrawEdge and DrawText (http://msdn.microsoft.com/en-us/library/ms534882.aspx and http://msdn.microsoft.com/en-us/library/ms533909.aspx). They work quite fine, however, when I try to reach the bottom of my paper (about 35 milimeter away from it) the line simply stops being drawn. I thought this was a limit of my printer. However, when I draw text, my printer has no trouble printing there and even lower. Is there a way for DrawEdge to draw lines there? Is there another method to do this? Is this a bug?

+1  A: 

I can think of a few reasons:

  • You have a clipping region set when you're drawing the edge that's set differently when you're drawing text.

  • The clipping region is set, but the printer isn't consistently clipping the text. Some printers will print an entire character even if only part of it is inside the clipping region. You can check its text clipping abilities by using GetDeviceCaps with TEXTCAPS. If this is the case, the text printing right near the bottom of the clipping region might show but other types of graphics (like lines) will get clipped.

  • You're mistaken about the printable region of the page. What type of printer is this? Many printers cannot print within 35 mm of the bottom edge. What does the driver report as the printable region? (Use GetDeviceCaps with PHYSICALOFFSETY and PHYSICALHEIGHT to determine how low on the page you can actually print.)

Good luck!

Adrian McCarthy