You can have a function that starts the print job, gets the page width and
height, and then the last thing it does is attach an event listener for an
end-of-scaling event and fires off the scaling function. The scaling
function finishes and dispatches the end-of-scaling event, which runs your
event listener function. The event listener function adds the scaled object
to the print job and sends the job to the printer. Like this:
 
private var printJob:FlexPrintJob;
 
private function doPrint():void {
  printJob:FlexPrintJob = new FlexPrintJob();
  if (!printJob.start()) return;
  yourScalingComponent.addEventListener("scalingDone", finishPrint);
  doScaling(printJob.pageWidth, printJob.pageHeight);
}
 
private function doScaling(pw:Number, ph:Number):void {
  var scaleJob:MyScalingComponent = new MyScalingComponent();
  scaleJob.pageWidth = pw;
  scaleJob.pageHeight = ph;
  scaleJob.scaleIt();
}
 
private function finishPrint(event:scalingDone) {
  var scaledObj:ScaledObj = event.result as ScaledObj;
  printJob.addObject(scaledObj, FlexPrintJobScaleType.NONE);
  printJob.send();
 
 
In your scaling component, define an event
 
<mx:Metadata>
  [Event(name="scalingDone", type="events.CustomEvent")]
</mx:Metadate>
 
 
Then when the scaling is complete, dispatch the scalingDone event:
 
this.dispatchEvent("scalingDone", scaledObj); 
 
 
The custom event looks like this (if you put it in a directory named
events):
 
package events {
  import flash.events.Event;
 
  public class CustomEvent extends Event {
    public var myObj:Object = null;
  
    public function CustomEvent(type:String, obj:Object) {
      super(type, true, true);
      this.myObj = obj;
    }
  }
}
 
 
HTH,
~randy
 

 

   _____  

From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On
Behalf Of Mike Anderson
Sent: Monday, December 17, 2007 12:12 PM
To: flexcoders@yahoogroups.com
Subject: [flexcoders] Help with Printing (relates to Scaling Object, just
before sending printjob)




Greetings All!

I have a major problem, where I have a function that properly scales an
Object *just* before sending it to the printer.

The issue is, the Object isn't scaling fast enough, so by the time it
gets added to the PrintJob, it still isn't the proper scale - and looks
completely wrong on the actual printout.

Initially, I figured I could simply scale the Object first (in an
entirely different function), then create some intentional pauses in the
code (or use callLater in the right places), THEN run my PrintJob
function code. BUT, my scaling functions rely on information brought
back from the PrintJob - like PageWidth and PageHeight - which means, my
Scaling Function must be called from within my PrintJob function.

Bottom line, is that everything is happening too quickly, for the
PrintJob to capture the properly scaled object.

Is there a way for me to insert some intentional pauses, to slow things
down, and give the object to be printed, time to properly scale, before
getting sent to the PrintJob?

Thank you in advance, for any help you can offer.

Mike


 


No virus found in this outgoing message.
Checked by AVG. 
Version: 7.5.503 / Virus Database: 269.17.4/1187 - Release Date: 12/16/2007
11:36 AM
 

Reply via email to