Printing options from answer printer
Bill Vlahos
bvlahos at mac.com
Wed Nov 12 22:21:48 EST 2008
Thanks Jan.
Here is the code I came up with. I want a half inch (36 pixels) margin
on all sides.
case "Print Window..."
if the printPaperOrientation = "portrait" then
put item 1 of printPaperSize - 36 into vX -- 36 = 0.5
inch margin should be supported on all printers
put item 2 of printPaperSize - 36 into vY
else
put item 1 of printPaperSize - 36 into vY -- 36 = 0.5
inch margin should be supported on all printers
put item 2 of printPaperSize - 36 into vX
end if
answer printer as sheet
if the result is not "Cancel" then
if (the width of this stack > vX) or (the height of this
stack > vY) then -- window bigger than paper
if (item 4 of the rect of this card / vY) > (item 3 of
the rect of this card / vX) then -- which ratio will be limiting
set the printScale to (vY - 36) / item 4 of the
rect of this card
else
set the printScale to (vX - 36) / item 3 of the
rect of this card
end if
else
set the printScale to 1
end if
set the printMargins to 36,36,36,36 -- 0.5 inch margin
print this card
end if
break
The resulting printout includes the menu items above the window (on a
Mac - not tested on Windows). How do I prevent it?
Bill Vlahos
On Nov 10, 2008, at 11:59 PM, Jan Schenkel wrote:
> When you use this 'print into rect' approach,
> Revolution ignores the 'printScale' property; so if
> you want to 'print into rect' with scaling to ensure
> that everything fits while preserving a relative size,
> you'll need to tweak your paper rectangle a bit.
>
> Continuing with the above example of a rectangular
> area on your card, you would have something like:
> (mind the line wrappings)
> ##
> on mouseUp
> answer printer as sheet
> if the result is "Cancel" then exit mouseUp
> set the printerOutput to "preview"
> put the topleft of graphic "PrintRect" into
> theTopLeft
> put the bottomRight of graphic "PrintRect" into
> theBottomRight
> put "30,100,500,700" into thePaperRect
> -- now we calculate how we can save the relative
> size
> put item 1 of theBottomRight - item 1 of theTopLeft
> \
> into theOriginWidth
> put item 2 of theBottomRight - item 2 of theTopLeft
> into \
> theOriginHeight
> put item 3 of thePaperRect - item 1 of thePaperRect
> into \
> thePrintWidth
> put item 4 of thePaperRect - item 2 of thePaperRect
> into \
> thePrintHeight
> put thePrintWidth / theOriginWidth into
> theWidthRatio
> put thePrintHeight / theOriginHeight into
> theHeightRatio
> if theWidthRatio > theHeightRatio then
> put round(theOriginWidth * theHeightRatio) into
> thePrintWidth
> else if theWidthRatio < theHeightRatio then
> put round(theOriginHeight * theWidthRatio) into
> thePrintHeight
> end if
> put item 1 of thePaperRect + thePrintWidth into \
> item 3 of thePaperRect
> put item 2 of thePaperRect + thePrintHeight into \
> item 4 of thePaperRect
> print this card from theTopLeft to theBottomRight
> into thePaperRect
> end mouseUp
> ##
>
> HTH,
>
> Jan Schenkel.
More information about the use-livecode
mailing list