Re: How to print in full page without margins

Tech Tip: Click here to run a free scan for Windows Errors and optimize PC performance



Hi Ron,
I tried that and it still not working. What happens is that the hard margin
returns .25 the printpreview shows exactly how the whole rectangle is drawn
around the hard margin. i.e., .25 from the left, .25 from the right etc. Its
nicely drawn on the printpreview. But somehow when I do actual printing the
printer adds .25 to the left of the hard margin. i.e. it starts drawing at
..50 double the size of the original hard margin.

To fix that I set the origins at margin to true. Since the graphics object
return now is located within the margin I start drawing the rectangle from
x:0, y:0 position. This fix the actual printing but the printpreview now
shows me it started drawing from the 0, 0 position. No hard margin is taken
into acount.

So I tested with different printer and found out that different printer has
different result again. Back to same old problem. The rectangle may sifted or
cut off on the right side etc.

Have you or anyone ever tried to print the rectangle of the hardmargin
(printable area). If so could you share information how this can be achieved.

I am using .net 1.1 and C#

Thanks Ron. Your inputs are greatly appreciated.

Ron, is it ok for me to do email exchange with you?

If any one from Microsoft reading this (hoping they visit forums), I think
its about time they provide a solution to this (if they have any) in their
MSDN or publish an article on how to do this exactly. So many people have
encounter problem with .net printing API behaving so differently on different
computer across different forums. This solution should offer technique for
printing the rectangle of a printable area hard margin that works with
different printer.

Judge

"Ron Allen" wrote:

> Judge,
> You may be seeing the way the rectangle is being drawn. Try drawing the
> rectangle with the left and bottom 1 less than the generated amounts. I've
> never tried the OriginAtMargins offset though. I just normally to a
> TranslateTransform by the negative of the left and top margins and then draw
> as normal. When I have output that may overflow the printer's hard margins
> I test the scaling necessary to fit into the drawn area and do a scale on
> the drawing as well.
> You might want to try doing the TranslateTransform on the Graphics to
> see how that works as well.
>
> Ron Allen
> "Judge" <Judge@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
> news:F5E99071-EE20-4D6D-9A08-D8CD08A656DD@xxxxxxxxxxxxxxxx
> > 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.
> >>
> >>
> >>
>
>
>
.