Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Stampare da Flash

Utilizzando la classe PrintJob, vediamo come stampare un intero clip o parti dello stesso, sia con ActionScript 2 che con ActionScript 3
Utilizzando la classe PrintJob, vediamo come stampare un intero clip o parti dello stesso, sia con ActionScript 2 che con ActionScript 3
Link copiato negli appunti

Dalla versione MX2004 la stampa degli elementi di un filmato SWF è diventata molto più semplice grazie all'introduzione della classe PrintJob. Con questa classe è infatti possibile selezionare in maniera precisa quali elementi mandare in stampa, con la possibilità di selezionare anche delle aree specifiche.

I passaggi da seguire per stampare una pagina sono principalmente quattro:

  • creare un oggetto PrintJob;
  • avviare l'aggiunta di pagine all'oggetto;
  • aggiungere le pagine che si desidera stampare;
  • inviare l'oggetto PrintJob alla stampante.

La versione ActionScript 2 della classe è compatibile con Flash Player 7 e versioni successive, invece, la versione ActionScript 3 è compatibile solo con Flash Player 9.

Stampare una singola pagina

Partiamo dalla stampa di una sola pagina, che dovrà contenere un movieclip presente sullo stage. Supponiamo che questo movieclip sia un rettangolo di 200x300 pixel con nome istanza clip_stampa.

Portiamoci sul primo fotogramma e inseriamo il seguente codice (compatibile sia con Actionscript 2 che con Actionscript 3):

Listato 1. Stampa una singola pagina

var stampa:PrintJob = new PrintJob()
stampa.start()
stampa.addPage(clip_stampa);
stampa.send()

Notiamo in particolare il metodo addPage che ci permette di inserire nell'oggetto PrintJob una pagina da stampare e da cui possiamo impostare l'oggetto, o l'area, che vogliamo aggiungere. È possibile passare delle singole clip inserendo come primo parametro il nome istanza, oppure tutto lo stage passando come valore this.

Una volta che la pagina è pronta viene chiamato il metodo start() della classe: questo apre la finestra di dialogo per la stampa, da cui l'utente potrà selezionare la qualità di stampa, il tipo di foglio su cui stampare e l'orientamento della pagina; queste ultime proprietà saranno reperibili tramite Actionscript con i seguenti comandi:

  • PrintJob.pageHeight: rileva l'altezza della pagina, inclusi i margini di default (ma non quelli impostati dall'utente)
  • PrintJob.pageWidh: rileva la larghezza della pagina , inclusi i margini di default (ma non quelli impostati dall'utente)
  • PrintJob.paperHeight: rileva l'altezza totale della pagina
  • PrintJob.paperWidth: rileva la larghezza totale della pagina
  • PrintJob.orientation: rileva l'orientamento della pagina (se verticale sarà PORTRAIT, se orizzontale sarà LANDSCAPE)

Grazie a questi potremo, ad esempio, ridimensionare una clip in modo che venga stampata nell'intera pagina, come con il seguente codice (Actionscript 3):

Listato 2. Stampa una clip su un intera pagina

var stampa:PrintJob = new PrintJob()
stampa.start()
clip_stampa.width = stampa.paperWidth
clip_stampa.height = stampa.paperHeight
stampa.addPage(clip_stampa);
stampa.send()

Per rendere questo codice in Actionscript 2, e quindi utilizzabile col Player 7, basterà cambiare le proprietà width ed height di clip_stampa con _width ed _height, quindi precedute dall'underscore.

La clip clip_stampa verrà ridimensionata alle dimensioni della pagina da stampare, con il formato settato dall'utente.

Stampare su più pagine

Possiamo intuire che per stampare più pagine in uno stesso processo di stampa sia necessario usare più volte il metodo addPage, inserendo nell'oggetto PrintJob più elementi prima della chiamata del metodo start().

Prendiamo ad esempio la nostra clip clip_stampa di 200x300 pixel e supponiamo di volerla stampare in più varianti (intera, dimezzata, solo una parte, a pagina intera) e su più pagine, il codice necessario sarà il seguente (Actionscript 3):

Listato 3. Stampa più pagine in più formati

var stampa:PrintJob = new PrintJob()
stampa.start()
clip_stampa.width = stampa.paperWidth
clip_stampa.height = stampa.paperHeight
stampa.addPage(clip_stampa);
clip_stampa.width = 200
clip_stampa.height = 300
stampa.addPage(clip_stampa)
stampa.addPage(clip_stampa,new Rectangle(0,0,200,150))
stampa.addPage(clip_stampa,new Rectangle(0,0,50,50))
stampa.send()

Otterremo la prima pagina con la clip stampata su tutto il foglio, la seconda con la clip alle dimensioni originali, la terza con la clip dimezzata in verticale e la quarta con solo una parte della clip (un quadrato di 50x50 pixel).

Notiamo l'utilizzo del comando new Rectangle per stabilire di stampare solo una parte della clip: i quattro numeri indicano rispettivamente la posizione x, la posizione y, la larghezza e l'altezza del rettangolo da usare per limitare l'area di stampa.

Possiamo quindi posizionare facilmente l'inizio dell'area che vogliamo stampare e le relative dimensioni e di conseguenza estrarre solo determinati elementi di un filmato da inviare alla stampante.

In Actionscript 2 non si usa il new Rectangle per stabilire l'area di stampa, ma la seguente sintassi:

Listato 4. Stampa di area in ActionScript 2

stampa.addPage(clip_stampa, {xMin : 0, xMax: 200, yMin: 0, yMax: 150});

Stampa di immagini

Qualora gli elementi da stampare includessero delle immagini è consigliabile utilizzare l'opzione printAsBitmap della classe PrintJobOptions.

Listato 5. Stampa di un immagine

var stampa:PrintJob = new PrintJob()
stampa.start()
var opzioni:PrintJobOptions = new PrintJobOptions();
opzioni.printAsBitmap = true;
stampa.addPage(clip_stampa, null, opzioni);
stampa.send()

Notiamo l'utilizzo di null come secondo parametro per indicare che vogliamo stampare tutta la clip; in alternativa è ovviamente sempre possibile utilizzare il new Rectangle per stampare solo una parte dell'immagine.

Risparmiare carta durante i test

Durante lo sviluppo di un'applicazione che offra le funzioni di stampa può essere necessario fare diverse prove: per evitare di stampare tanti fogli affidiamoci a stampanti virtuali come Flash Paper, Acrobat Distiller (entrambi prodotti Adobe) o PrimoPDF disponibile anche gratuitamente; in questo modo potremo facilmente stampare su file invece che su carta così da visionare direttamente a schermo il risultato.

Una volta ottenuto il risultato che ci pare corretto con la stampa virtuale possiamo provare a stampare su carta, ma nel frattempo avremo risparmiato probabilmente un buon numero di fogli e anche una gran quantità di inchiostro.

Ti consigliamo anche