graham.samuel at wanadoo.fr
Fri Apr 1 03:29:46 CST 2005
Thanks to all who replied: I'm getting good advice on this. Chipp,
thanks for your example of print with preview: I was doing something a
bit like this, but your solution is better thought out, I gladly admit.
On one point I don't quite concur. You wrote:
> Call the PageSetup function (answer printer) and from this you get the
> printPaperSize (tPageHeight and tPageWidth). You can use these to setup
> your offscreen imaging stack. You also get the printMargins as well.
> these also to setup your offscreen print stack.
Actually AFAICS the user can't reset the printMargins - they just stay
stubbornly at 72 points all round (one inch) - at least this is what
happens here on my OSX setup: in fact I can't display an OS-originated
dialog which straightforwardly allows the user to reset the margins, it
has to be done by a kind of trick. I think it might be easier on the PC
- there the problem is different, in that I can't get the 'Print'
dialog to appear at all. I just don't know how you can tell the PC to
print more than one copy, for example. Still trying.
>> 1. I arranged for the initialisation routine in my app to read the
>> paper size and the margins and to make my stack the same size as the
>> printPaperSize and my print area the same size as the page minus the
> Make the card the same size as the print area i.e. the printPaperSize
> less the printMargins.
> Have your printable objects fill the card so there is no excess space
> left at the margins of the card.
Ah! Light dawns! The RunRev card doesn't represent a page, as I had
thought: it represents something that fills the printable area on the
page, which can be completely different. I was using the wrong mental
model. this means that the printMargins will not tell you where to put
your printing on the card, although ironically they will tell you how
wide the printable area is allowed to be.
Sarah also wrote:
> I don't know how Rev handles you setting the margins in Page Setup..
> but you can easily set them in your script:
> set the printMargins to "50,50,50,50"
Well, I want my user to be able to set the margins, as in other apps:
in particular, I want the user to be able to select the largest
available printable area on the page, which is certainly going to be
greater than is implied by the default margins of 72,72,72,72, but will
in most printers be more than 0,0,0,0 (true, there are some printers
that do edge-to-edge printing, but this is unusual). So I would like to
be able to detect what these limits are. Otherwise if my app, or my
user, blindly sets the printMargins to some arbitrary value, some of
the printing may be cut off - this of course depends on the particular
printer being used, which in general the app can't know in advance. See
Thanks for all the advice
Graham Samuel / The Living Fossil Co. / UK and France
More information about the use-livecode