Home All Groups Group Topic Archive Search About

How to change printer's physical print margins thru VB coding?

Author
31 Jul 2006 3:34 AM
Mark
Hi,
I am creating application in VB 2005. and when I print report it adds extra
0.45 cm margin on left and top, and the reason for this is physical margins
of printer.

Is it possible to change printer's physical margins using VB coding?

Cheers
--
Osmotion Blue

Author
31 Jul 2006 9:11 AM
tommaso.gastaldi
You can use the margin property of

PrintDocument.DefaultPageSettings

        PrintDocument.DefaultPageSettings.Margins.Top =  ...
(hundredths of an inch)
        PrintDocument.DefaultPageSettings.Margins.Bottom = ...
        PrintDocument.DefaultPageSettings.Margins.Left = ...
        PrintDocument.DefaultPageSettings.Margins.Right = ...


(Imports System.Drawing.Printing)

http://msdn2.microsoft.com/en-us/library/system.drawing.printing.margins_members(d=ide).aspx

-tom

Mark ha scritto:

Show quoteHide quote
> Hi,
> I am creating application in VB 2005. and when I print report it adds extra
> 0.45 cm margin on left and top, and the reason for this is physical margins
> of printer.
>
> Is it possible to change printer's physical margins using VB coding?
>
> Cheers
> --
> Osmotion Blue
Author
31 Jul 2006 10:34 PM
Mark
Hi Tom,
Thanks for reply
Using the code u sent sets the margins that we can see in print preview but
the physical margins of printer will be added to this margins. So I need to
change printer's physical margins by VB coding.

Another problem is that I am creating PrintDocument object but I am using
report viewer's print button to display print dialogue.  I do not have any
idea how to handle this type of situation.

Any idea?

--
Osmotion Blue


Show quoteHide quote
"tommaso.gasta***@uniroma1.it" wrote:

> You can use the margin property of
>
> PrintDocument.DefaultPageSettings
>
>         PrintDocument.DefaultPageSettings.Margins.Top =  ...
> (hundredths of an inch)
>         PrintDocument.DefaultPageSettings.Margins.Bottom = ...
>         PrintDocument.DefaultPageSettings.Margins.Left = ...
>         PrintDocument.DefaultPageSettings.Margins.Right = ...
>
>
> (Imports System.Drawing.Printing)
>
> http://msdn2.microsoft.com/en-us/library/system.drawing.printing.margins_members(d=ide).aspx
>
> -tom
>
> Mark ha scritto:
>
> > Hi,
> > I am creating application in VB 2005. and when I print report it adds extra
> > 0.45 cm margin on left and top, and the reason for this is physical margins
> > of printer.
> >
> > Is it possible to change printer's physical margins using VB coding?
> >
> > Cheers
> > --
> > Osmotion Blue
>
>
Author
31 Jul 2006 10:56 PM
tommaso.gastaldi
Mark ha scritto:

> Hi Tom,
> Thanks for reply
> Using the code u sent sets the margins that we can see in print preview but
> the physical margins of printer will be added to this margins. So I need to
> change printer's physical margins by VB coding.

make sure to set the also the right page size. There is no such a thing
like
"margins are added".

>
> Another problem is that I am creating PrintDocument object but I am using
> report viewer's print button to display print dialogue.  I do not have any
> idea how to handle this type of situation.

Never used report viewer. Be more specific: someone else may help you

Show quoteHide quote
>
> Any idea?
>
> --
> Osmotion Blue
>
>
> "tommaso.gasta***@uniroma1.it" wrote:
>
> > You can use the margin property of
> >
> > PrintDocument.DefaultPageSettings
> >
> >         PrintDocument.DefaultPageSettings.Margins.Top =  ...
> > (hundredths of an inch)
> >         PrintDocument.DefaultPageSettings.Margins.Bottom = ...
> >         PrintDocument.DefaultPageSettings.Margins.Left = ...
> >         PrintDocument.DefaultPageSettings.Margins.Right = ...
> >
> >
> > (Imports System.Drawing.Printing)
> >
> > http://msdn2.microsoft.com/en-us/library/system.drawing.printing.margins_members(d=ide).aspx
> >
> > -tom
> >
> > Mark ha scritto:
> >
> > > Hi,
> > > I am creating application in VB 2005. and when I print report it adds extra
> > > 0.45 cm margin on left and top, and the reason for this is physical margins
> > > of printer.
> > >
> > > Is it possible to change printer's physical margins using VB coding?
> > >
> > > Cheers
> > > --
> > > Osmotion Blue
> >
> >
Author
31 Jul 2006 11:10 PM
Mark
Hi Tom,
If we use this code
Dim p As New PrinterSettings()
        For Each s As String In PrinterSettings.InstalledPrinters
            p.PrinterName = s
            MsgBox(p.DefaultPageSettings.PrintableArea.ToString)
        Next
we will get each printer's default settings.

and if use
p.DefaultPageSettings.Margins.ToString
then this will give margins we can see in the print preview.

So if printer's default physical margin is 0 then we will not get any
difference between print preview and the printed page.

But if printer's default left physical margin is 17 (hundredth of inch) then
it will add extra 0.17 inch (0.43 cm) in addition to the left margin that we
set for the report.

--
Osmotion Blue


Show quoteHide quote
"tommaso.gasta***@uniroma1.it" wrote:

>
> Mark ha scritto:
>
> > Hi Tom,
> > Thanks for reply
> > Using the code u sent sets the margins that we can see in print preview but
> > the physical margins of printer will be added to this margins. So I need to
> > change printer's physical margins by VB coding.
>
> make sure to set the also the right page size. There is no such a thing
> like
> "margins are added".
>
> >
> > Another problem is that I am creating PrintDocument object but I am using
> > report viewer's print button to display print dialogue.  I do not have any
> > idea how to handle this type of situation.
>
> Never used report viewer. Be more specific: someone else may help you
>
> >
> > Any idea?
> >
> > --
> > Osmotion Blue
> >
> >
> > "tommaso.gasta***@uniroma1.it" wrote:
> >
> > > You can use the margin property of
> > >
> > > PrintDocument.DefaultPageSettings
> > >
> > >         PrintDocument.DefaultPageSettings.Margins.Top =  ...
> > > (hundredths of an inch)
> > >         PrintDocument.DefaultPageSettings.Margins.Bottom = ...
> > >         PrintDocument.DefaultPageSettings.Margins.Left = ...
> > >         PrintDocument.DefaultPageSettings.Margins.Right = ...
> > >
> > >
> > > (Imports System.Drawing.Printing)
> > >
> > > http://msdn2.microsoft.com/en-us/library/system.drawing.printing.margins_members(d=ide).aspx
> > >
> > > -tom
> > >
> > > Mark ha scritto:
> > >
> > > > Hi,
> > > > I am creating application in VB 2005. and when I print report it adds extra
> > > > 0.45 cm margin on left and top, and the reason for this is physical margins
> > > > of printer.
> > > >
> > > > Is it possible to change printer's physical margins using VB coding?
> > > >
> > > > Cheers
> > > > --
> > > > Osmotion Blue
> > >
> > >
>
>
Author
1 Aug 2006 9:40 AM
tommaso.gastaldi
Use a PaperSize which matches *exactly* your paper (e.g. A4 or
whatever)
then set the margin to a value that includes (that is >=) the
"physical" margin
of the printer. Usually normal printers are not capable to use the
entire surface of the sheet
and leave some small margin, which I am calling "physical". Your margin
must be equal or greater than that in order not to have your drawing
clipped.

        PrintDocument.DefaultPageSettings.PaperSize = New
Printing.PaperSize("Custom", 827, 1169)  'A4
        'set margin so that they are at least equal to the "physical"
margins of the printer

[The PrintableArea property is not so important, unless you want to
make an attempt
to establish the size "physical" margins are. For you purposes you
might disregard this detail.
You can set it later, after you are already able to print fine with
arbitrary margins (anyway greater than the "physical" ones)]

-tom


Mark ha scritto:

Show quoteHide quote
> Hi Tom,
> If we use this code
> Dim p As New PrinterSettings()
>         For Each s As String In PrinterSettings.InstalledPrinters
>             p.PrinterName = s
>             MsgBox(p.DefaultPageSettings.PrintableArea.ToString)
>         Next
> we will get each printer's default settings.
>
> and if use
> p.DefaultPageSettings.Margins.ToString
> then this will give margins we can see in the print preview.
>
> So if printer's default physical margin is 0 then we will not get any
> difference between print preview and the printed page.
>
> But if printer's default left physical margin is 17 (hundredth of inch) then
> it will add extra 0.17 inch (0.43 cm) in addition to the left margin that we
> set for the report.
>
> --
> Osmotion Blue
>
>
> "tommaso.gasta***@uniroma1.it" wrote:
>
> >
> > Mark ha scritto:
> >
> > > Hi Tom,
> > > Thanks for reply
> > > Using the code u sent sets the margins that we can see in print preview but
> > > the physical margins of printer will be added to this margins. So I need to
> > > change printer's physical margins by VB coding.
> >
> > make sure to set the also the right page size. There is no such a thing
> > like
> > "margins are added".
> >
> > >
> > > Another problem is that I am creating PrintDocument object but I am using
> > > report viewer's print button to display print dialogue.  I do not have any
> > > idea how to handle this type of situation.
> >
> > Never used report viewer. Be more specific: someone else may help you
> >
> > >
> > > Any idea?
> > >
> > > --
> > > Osmotion Blue
> > >
> > >
> > > "tommaso.gasta***@uniroma1.it" wrote:
> > >
> > > > You can use the margin property of
> > > >
> > > > PrintDocument.DefaultPageSettings
> > > >
> > > >         PrintDocument.DefaultPageSettings.Margins.Top =  ...
> > > > (hundredths of an inch)
> > > >         PrintDocument.DefaultPageSettings.Margins.Bottom = ...
> > > >         PrintDocument.DefaultPageSettings.Margins.Left = ...
> > > >         PrintDocument.DefaultPageSettings.Margins.Right = ...
> > > >
> > > >
> > > > (Imports System.Drawing.Printing)
> > > >
> > > > http://msdn2.microsoft.com/en-us/library/system.drawing.printing.margins_members(d=ide).aspx
> > > >
> > > > -tom
> > > >
> > > > Mark ha scritto:
> > > >
> > > > > Hi,
> > > > > I am creating application in VB 2005. and when I print report it adds extra
> > > > > 0.45 cm margin on left and top, and the reason for this is physical margins
> > > > > of printer.
> > > > >
> > > > > Is it possible to change printer's physical margins using VB coding?
> > > > >
> > > > > Cheers
> > > > > --
> > > > > Osmotion Blue
> > > >
> > > >
> >
> >
Author
1 Aug 2006 10:49 PM
Hinesh
Margins that I have set are greater than physical margins, but physical
margins are added to the margins that I have set.

And other issue is that I can not use PrintDocumnet object because I am
using report viewer.

Any idea?

Show quoteHide quote
"tommaso.gasta***@uniroma1.it" wrote:

> Use a PaperSize which matches *exactly* your paper (e.g. A4 or
> whatever)
> then set the margin to a value that includes (that is >=) the
> "physical" margin
> of the printer. Usually normal printers are not capable to use the
> entire surface of the sheet
> and leave some small margin, which I am calling "physical". Your margin
> must be equal or greater than that in order not to have your drawing
> clipped.
>
>         PrintDocument.DefaultPageSettings.PaperSize = New
> Printing.PaperSize("Custom", 827, 1169)  'A4
>         'set margin so that they are at least equal to the "physical"
> margins of the printer
>
> [The PrintableArea property is not so important, unless you want to
> make an attempt
> to establish the size "physical" margins are. For you purposes you
> might disregard this detail.
> You can set it later, after you are already able to print fine with
> arbitrary margins (anyway greater than the "physical" ones)]
>
> -tom
>
>
> Mark ha scritto:
>
> > Hi Tom,
> > If we use this code
> > Dim p As New PrinterSettings()
> >         For Each s As String In PrinterSettings.InstalledPrinters
> >             p.PrinterName = s
> >             MsgBox(p.DefaultPageSettings.PrintableArea.ToString)
> >         Next
> > we will get each printer's default settings.
> >
> > and if use
> > p.DefaultPageSettings.Margins.ToString
> > then this will give margins we can see in the print preview.
> >
> > So if printer's default physical margin is 0 then we will not get any
> > difference between print preview and the printed page.
> >
> > But if printer's default left physical margin is 17 (hundredth of inch) then
> > it will add extra 0.17 inch (0.43 cm) in addition to the left margin that we
> > set for the report.
> >
> > --
> > Osmotion Blue
> >
> >
> > "tommaso.gasta***@uniroma1.it" wrote:
> >
> > >
> > > Mark ha scritto:
> > >
> > > > Hi Tom,
> > > > Thanks for reply
> > > > Using the code u sent sets the margins that we can see in print preview but
> > > > the physical margins of printer will be added to this margins. So I need to
> > > > change printer's physical margins by VB coding.
> > >
> > > make sure to set the also the right page size. There is no such a thing
> > > like
> > > "margins are added".
> > >
> > > >
> > > > Another problem is that I am creating PrintDocument object but I am using
> > > > report viewer's print button to display print dialogue.  I do not have any
> > > > idea how to handle this type of situation.
> > >
> > > Never used report viewer. Be more specific: someone else may help you
> > >
> > > >
> > > > Any idea?
> > > >
> > > > --
> > > > Osmotion Blue
> > > >
> > > >
> > > > "tommaso.gasta***@uniroma1.it" wrote:
> > > >
> > > > > You can use the margin property of
> > > > >
> > > > > PrintDocument.DefaultPageSettings
> > > > >
> > > > >         PrintDocument.DefaultPageSettings.Margins.Top =  ...
> > > > > (hundredths of an inch)
> > > > >         PrintDocument.DefaultPageSettings.Margins.Bottom = ...
> > > > >         PrintDocument.DefaultPageSettings.Margins.Left = ...
> > > > >         PrintDocument.DefaultPageSettings.Margins.Right = ...
> > > > >
> > > > >
> > > > > (Imports System.Drawing.Printing)
> > > > >
> > > > > http://msdn2.microsoft.com/en-us/library/system.drawing.printing.margins_members(d=ide).aspx
> > > > >
> > > > > -tom
> > > > >
> > > > > Mark ha scritto:
> > > > >
> > > > > > Hi,
> > > > > > I am creating application in VB 2005. and when I print report it adds extra
> > > > > > 0.45 cm margin on left and top, and the reason for this is physical margins
> > > > > > of printer.
> > > > > >
> > > > > > Is it possible to change printer's physical margins using VB coding?
> > > > > >
> > > > > > Cheers
> > > > > > --
> > > > > > Osmotion Blue
> > > > >
> > > > >
> > >
> > >
>
>
Author
2 Aug 2006 9:15 AM
tommaso.gastaldi
Ah, that's all another story. I thought you were using a standard
PrintDocument.

About report viewer I know nothing (I prefer to code the report myself:
these tools are too primitive :).

-tom

Hinesh ha scritto:

Show quoteHide quote
> Margins that I have set are greater than physical margins, but physical
> margins are added to the margins that I have set.
>
> And other issue is that I can not use PrintDocumnet object because I am
> using report viewer.
>
> Any idea?
>
> "tommaso.gasta***@uniroma1.it" wrote:
>
> > Use a PaperSize which matches *exactly* your paper (e.g. A4 or
> > whatever)
> > then set the margin to a value that includes (that is >=) the
> > "physical" margin
> > of the printer. Usually normal printers are not capable to use the
> > entire surface of the sheet
> > and leave some small margin, which I am calling "physical". Your margin
> > must be equal or greater than that in order not to have your drawing
> > clipped.
> >
> >         PrintDocument.DefaultPageSettings.PaperSize = New
> > Printing.PaperSize("Custom", 827, 1169)  'A4
> >         'set margin so that they are at least equal to the "physical"
> > margins of the printer
> >
> > [The PrintableArea property is not so important, unless you want to
> > make an attempt
> > to establish the size "physical" margins are. For you purposes you
> > might disregard this detail.
> > You can set it later, after you are already able to print fine with
> > arbitrary margins (anyway greater than the "physical" ones)]
> >
> > -tom
> >
> >
> > Mark ha scritto:
> >
> > > Hi Tom,
> > > If we use this code
> > > Dim p As New PrinterSettings()
> > >         For Each s As String In PrinterSettings.InstalledPrinters
> > >             p.PrinterName = s
> > >             MsgBox(p.DefaultPageSettings.PrintableArea.ToString)
> > >         Next
> > > we will get each printer's default settings.
> > >
> > > and if use
> > > p.DefaultPageSettings.Margins.ToString
> > > then this will give margins we can see in the print preview.
> > >
> > > So if printer's default physical margin is 0 then we will not get any
> > > difference between print preview and the printed page.
> > >
> > > But if printer's default left physical margin is 17 (hundredth of inch) then
> > > it will add extra 0.17 inch (0.43 cm) in addition to the left margin that we
> > > set for the report.
> > >
> > > --
> > > Osmotion Blue
> > >
> > >
> > > "tommaso.gasta***@uniroma1.it" wrote:
> > >
> > > >
> > > > Mark ha scritto:
> > > >
> > > > > Hi Tom,
> > > > > Thanks for reply
> > > > > Using the code u sent sets the margins that we can see in print preview but
> > > > > the physical margins of printer will be added to this margins. So I need to
> > > > > change printer's physical margins by VB coding.
> > > >
> > > > make sure to set the also the right page size. There is no such a thing
> > > > like
> > > > "margins are added".
> > > >
> > > > >
> > > > > Another problem is that I am creating PrintDocument object but I am using
> > > > > report viewer's print button to display print dialogue.  I do not have any
> > > > > idea how to handle this type of situation.
> > > >
> > > > Never used report viewer. Be more specific: someone else may help you
> > > >
> > > > >
> > > > > Any idea?
> > > > >
> > > > > --
> > > > > Osmotion Blue
> > > > >
> > > > >
> > > > > "tommaso.gasta***@uniroma1.it" wrote:
> > > > >
> > > > > > You can use the margin property of
> > > > > >
> > > > > > PrintDocument.DefaultPageSettings
> > > > > >
> > > > > >         PrintDocument.DefaultPageSettings.Margins.Top =  ...
> > > > > > (hundredths of an inch)
> > > > > >         PrintDocument.DefaultPageSettings.Margins.Bottom = ...
> > > > > >         PrintDocument.DefaultPageSettings.Margins.Left = ...
> > > > > >         PrintDocument.DefaultPageSettings.Margins.Right = ...
> > > > > >
> > > > > >
> > > > > > (Imports System.Drawing.Printing)
> > > > > >
> > > > > > http://msdn2.microsoft.com/en-us/library/system.drawing.printing.margins_members(d=ide).aspx
> > > > > >
> > > > > > -tom
> > > > > >
> > > > > > Mark ha scritto:
> > > > > >
> > > > > > > Hi,
> > > > > > > I am creating application in VB 2005. and when I print report it adds extra
> > > > > > > 0.45 cm margin on left and top, and the reason for this is physical margins
> > > > > > > of printer.
> > > > > > >
> > > > > > > Is it possible to change printer's physical margins using VB coding?
> > > > > > >
> > > > > > > Cheers
> > > > > > > --
> > > > > > > Osmotion Blue
> > > > > >
> > > > > >
> > > >
> > > >
> >
> >