VoyForums
[ Show ]
Support VoyForums
[ Shrink ]
VoyForums Announcement: Programming and providing support for this service has been a labor of love since 1997. We are one of the few services online who values our users' privacy, and have never sold your information. We have even fought hard to defend your privacy in legal cases; however, we've done it with almost no financial support -- paying out of pocket to continue providing the service. Due to the issues imposed on us by advertisers, we also stopped hosting most ads on the forums many years ago. We hope you appreciate our efforts.

Show your support by donating any amount. (Note: We are still technically a for-profit company, so your contribution is not tax-deductible.) PayPal Acct: Feedback:

Donate to VoyForums (PayPal):

Login ] [ Contact Forum Admin ] [ Main index ] [ Post a new message ] [ Search | Check update time | Archives: 12345678[9]10 ]


[ Next Thread | Previous Thread | Next Message | Previous Message ]

Date Posted: 07:20:50 08/22/00 Tue
Author: Michel
Subject: Re: Printing at 600 dpi produces small images
In reply to: Larry Griffiths 's message, "Re: Printing at 600 dpi produces small images" on 12:03:39 08/21/00 Mon


Hi Larry,

I'm sorry for my misunderstanding. I was only looking at the .Print method. I'll change the code in .SetPrintMode to,

begin
{ Set the printer orientation to match the graphic characteristics.

MB Aug 21, 2000. The Orientation is only set automatically when
UsePrintJob is True. }
if (PrintMode = pmSpecificWidthAndHeight) and UsePrintJob then
begin
if Self.Width > Self.Height then
Printer.Orientation := poLandscape
else
Printer.Orientation := poPortrait;
end;

GetPrinterMetrics(FPrinterMetrics);

{ MB Oct 20, 1999. This assignment was inadvertently left out in a
previous change }
FPrintMode := InPrintMode;
end;

Let me know if this does not suite you.

Best regards,

Michel
> The very first lines in SetPrintMode that set the
> printer orientation are...
>
> if(PrintMode = pmSpecificWidthAndHeight)then
> begin
> {
> Printer.Orientation is being set here...
> }
> end;
>
> This code does not check for the FUsePrintJob int the
> source code that we have, so we make the code check
> for FUsePrintJob and do not set Printer Orientation
> when we are controlling the Printjob.
>
> Larry.
>
> >
> > Dear Larry,
> >
> > If UsePrintJob is False, the printer orientation may
> > not be changed. I cannot see where the
> >
> > orientation may be set to the wrong setting by
> > mistake. When UsePrintJob is True, the
> >
> > orientation is set the landscape with if the width is
> > longer than the height. This indeed may
> >
> > not be the desired result if using
> > pmSpecificWidthAndHeight. I will change the code to:
> >
> > if UsePrintJob then
> > begin
> > { MB Aug 15, 2000. If the print mode
> specifies
> > a width and height,
> > use the specified dimensions, not the
> > dimensions of the Graphic. }
> >
> > if PrintMode = pmSpecificWidthAndHeight then
> > begin
> > if Self.Width > Self.Height then
> > Printer.Orientation := poLandscape
> > else
> > Printer.Orientation := poPortrait;
> > end
> > else
> > begin
> > if Graphic.Width > Graphic.Height then
> > Printer.Orientation := poLandscape
> > else
> > Printer.Orientation := poPortrait;
> > end;
> > end;
> >
> > If you don't want the orientation to be set from the
> > dimensions, then as you are doing,
> > setting UsePrintJob to False, is the proper approach.
> > Let me know if you have any other
> >
> > problems with this.
> >
> > Best regards,
> >
> > Michel
> >
> > > >
> > > > Hi Larry,
> > > >
> > > > I have done a change recently that solves this
> > > problem
> > > > without having to change the PrintMode. This is
> > > > because the printer metrics were only read when
> the
> > > > PrintMode property is assigned. So if the
> > resolution
> > > > is changed on the printer, but the PrintMOde is
> not
> > > > changed, the graphics are not scaled properly.
> Here
> > > is
> > > > the change.
> > > >
> > > > In EnPrint.Pas, TDibGraphicPrinter.Print,
> > > >
> > > > just before the case PrintMode of statement,
> add:
> > > >
> > > > { MB Jul 27, 2000 Re-read the printer metrics
> > as
> > > > changing the orientation
> > > > on some printers may change the parameters
> }
> > > > GetPrinterMetrics(FPrinterMetrics);
> > > >
> > > > case PrintMode of
> > > > pmOriginalSize :
> > > >
> > > > I think this will solve the problem.
> > > >
> > > > Best regards,
> > > >
> > > > Michel
> > > >
> > > We are NOT using pmOriginalSize. We are using
> > > pmSpecificWidthAndHeight. We call PrintMode after
> we
> > > have set the orientation on the printer, but it
> seems
> > > Printmode is randomly setting the orientation to
> > > Portrait or Landscape. We are adding a statement
> to
> > > SetPrintMode that says:
> > >
> > > if(PrintMode = pmSpecificWidthAndHeight) AND
> > > (UsePrintJob)
> > >
> > > so that SetPrintMode will not set the orientation
> on
> > > the printer. We have UsePrintJob set to false. We
> > > hope this fixes our current problem.

[ Next Thread | Previous Thread | Next Message | Previous Message ]

[ Contact Forum Admin ]


Forum timezone: GMT-5
VF Version: 3.00b, ConfDB:
Before posting please read our privacy policy.
VoyForums(tm) is a Free Service from Voyager Info-Systems.
Copyright © 1998-2019 Voyager Info-Systems. All Rights Reserved.