Re: How to print in full page without margins



how big is the difference between the size you get from code and the actual printed one?

Judge wrote:
Hi Ron,
I found a great set of codes and article that you post in the other forum for getting the printer's hard margin throught GetDeviceCaps.


I was able to retrieve the correct hard margins through GetDeviceCaps but I am unable to tell the printer to use that hard margins to draw maximum printable area. I have the following code for setting the margins.

IntPtr hDc = new IntPtr();
hDc = e.Graphics.GetHdc();
PrintUtil.GetHardMargins(hDc, ref leftHardMargin, ref topHardMargin, ref rightHardMargin, ref bottomHardMargin);
e.Graphics.ReleaseHdc(hDc);




leftMargin = Convert.ToInt32(leftHardMargin);
			topMargin = Convert.ToInt32(topHardMargin);
			rightMargin = Convert.ToInt32(rightHardMargin);
			bottomMargin = Convert.ToInt32(bottomHardMargin);

this.DefaultPageSettings.Margins = new Margins(leftMargin,leftMargin,topMargin,topMargin);

this.OriginAtMargins = true; Rectangle myRect = new Rectangle(leftMargin, topMargin, rightMargin, bottomMargin);



e.Graphics.DrawRectangle(Pens.Black, myRect );


The printer cuts of the right side of the rectangle box. And the printer's left offeset seems to be wider than the printer's actual printable area which I tested with left and right margin set to zero. So I can see where the printer start printing on the page.

I have tried so many ways of setting printers margins but none seems to work.

Furthermore, my way of setting margins have different effects on different printers.

Please help me figure out what is making this weird behavior.

Thanks in advance


"Ron Allen" wrote:


Most printers can't print all the way to the physical margins. You are undoubtedly seeing the physical offset for the hard margins for your page. You can PInvoke GetDeviceCaps to get the exact physical margins for the printer drawing on a page and you could then scale the drawing so that all your information will fit or just offset things if you don't need the actual whole page size.
There are some printers that can print all the way to the margins for larger paper but they tend to be very expensive.


Ron Allen
"zhaounknown" <zhaounknown@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message news:AB95B24B-D809-4833-B4E7-AC6219F114D4@xxxxxxxxxxxxxxxx


I set the DefaultPageSettings.Margins.Left/Right/Top/Bottom to 0, it doesn't
seem to work for the Left margin for two printers (HP and Brother).


Am I missing any other properties that should be set? Thanks a lot.



.



Relevant Pages

  • Re: VS .NET Printing (Margin issues and problem with only last page will print)
    ... the beginning each time print is called. ... PrintUtils.GetHardMargins, ref left, ref top, ref right, ... margins in 1/100ths of an inch. ... If you for instance setup the left ...
    (microsoft.public.vsnet.general)
  • Re: How to print in full page without margins
    ... I was able to retrieve the correct hard margins through GetDeviceCaps but I ... I have tried so many ways of setting printers margins but none seems to work. ...
    (microsoft.public.dotnet.framework.drawing)
  • Re: Help on adjusting printer margins
    ... It's possible that GetDeviceCaps ... > In the PrintPage event handler I retrieve the printer margins using ... > GetHardMargins as been discussed in several other posts. ... > Does anyone have a clue on why the retrieved HardMargins are so huge? ...
    (microsoft.public.dotnet.framework.drawing)
  • Re: how get devicecaps
    ... > to a REALbasic program, though, as RB does not AFAIK provide ... The MS Windows GetDeviceCaps API returns specific information about the ... takes these margins into account automatically, ...
    (comp.lang.basic.realbasic)
  • Re: Finding the printable area?
    ... You will need to use PInvoke on GetDeviceCaps to find the exact margins. ... > Our app likes to print data-rich output that fills the page width of the ... we've found that the printable area of each ...
    (microsoft.public.dotnet.framework)

Loading