Attività di Flash Player e interfaccia di stampa del sistema operativo

Poiché Flash Player invia le pagine all'interfaccia di stampa del sistema operativo, è opportuno comprendere l'ambito delle attività gestite da Flash Player e quello delle attività gestite dall'interfaccia di stampa del sistema operativo. Flash Player può avviare un lavoro di stampa, leggere alcune delle impostazioni della pagina di una stampante, passare il contenuto per un lavoro di stampa al sistema operativo e verificare se l'utente o il sistema ha annullato un lavoro di stampa. Tutti gli altri processi, ad esempio la visualizzazione delle finestre di dialogo specifiche della stampante, l'annullamento di un lavoro di stampa elaborato dallo spooler o la segnalazione dello stato della stampante, vengono gestiti dal sistema operativo. Flash Player è in grado di rispondere se si verificano problemi all'avvio o durante la formattazione di un lavoro di stampa, ma può fornire una segnalazione solo su determinate proprietà o condizioni dall'interfaccia di stampa del sistema operativo. Gli sviluppatori dovranno fare in modo che il codice abbia la capacità di rispondere a queste proprietà o condizioni.

Sezioni

Operazioni relative alle eccezioni e ai valori restituiti
Operazioni con le proprietà della pagina
Impostazione del rendering vettoriale o bitmap
Tempistica delle istruzioni per i lavori di stampa

Operazioni relative alle eccezioni e ai valori restituiti

È opportuno verificare se il metodo PrintJob.start() restituisce true prima di eseguire le chiamate a addPage() e send(), qualora l'utente abbia annullato il lavoro di stampa. Un metodo semplice per verificare se questi metodi sono stati annullati, prima di continuare, consiste nell'inserirli in un'istruzione if, come riportato di seguito:

if (myPrintJob.start())
{
    // Inserire qui le istruzioni addPage() e send()
}

Se PrintJob.start() è true, cioè se l'utente ha selezionato Stampa (o Flash Player ha avviato il comando Stampa), possono essere chiamati i metodi addPage() e send().

Inoltre, per facilitare la gestione del processo di stampa, Flash Player genera delle eccezioni per il metodo PrintJob.addPage(), così che sia possibile rilevare gli errori e presentare le informazioni e le opzioni all'utente. Se un metodo PrintJob.addPage() ha esito negativo, è possibile chiamare un'altra funzione oppure interrompere il lavoro di stampa corrente. Per rilevare queste eccezioni, incorporare le chiamate ad addPage() in un'istruzione try..catch, come nell'esempio riportato di seguito. Nell'esempio, [params] è un segnaposto per i parametri che specificano il contenuto effettivo da stampare.

if (myPrintJob.start())
{
    try
    {
        myPrintJob.addPage([params]);
    }
    catch (error:Error)
    {
        // Gestisce l'errore,  
    }
    myPrintJob.send();
}

Una volta avviato il lavoro di stampa, è possibile aggiungere il contenuto utilizzando PrintJob.addPage() e verificare se viene generata un'eccezione (ad esempio, se l'utente ha annullato il lavoro di stampa). In caso contrario, è possibile aggiungere logica all'istruzione catch per fornire all'utente (o a Flash Player) le informazioni e le opzioni oppure è possibile interrompere il lavoro di stampa corrente. Se la pagina viene aggiunta correttamente, si può procedere all'invio delle pagine alla stampante utilizzando PrintJob.send().

Se durante l'invio del lavoro di stampa alla stampante si verifica un problema (ad esempio, la stampante non è in linea), è possibile rilevare anche quell'eccezione e fornire all'utente (o a Flash Player) le informazioni o ulteriori opzioni (quale la visualizzazione del testo di un messaggio o la presentazione di un avviso nell'animazione di Flash). È possibile, ad esempio, assegnare nuovo testo a un campo di testo in un'istruzione if..else, come illustrato nel codice riportato di seguito:

if (myPrintJob.start())
{
    try
    {
        myPrintJob.addPage([params]);
    }
    catch (error:Error)
    {
        // Gestisce l'errore. 
    }
    myPrintJob.send();
}
else
{
    myAlert.text = "Print job canceled";
}

Per un esempio funzionante, vedere Esempio: Modifica in scala, ritaglio e risposta.

Operazioni con le proprietà della pagina

Dopo che l'utente ha fatto clic su OK nella finestra di dialogo di stampa e PrintJob.start() ha restituito true, è possibile accedere alle proprietà definite nelle impostazioni della stampante, che includono la larghezza e l'altezza del foglio (pageHeight e pageWidth) e l'orientamento del contenuto sul foglio. Poiché queste sono impostazioni della stampante, che non vengono controllate da Flash Player, non è possibile modificarle; tuttavia, possono essere utilizzate per allineare il contenuto inviato alla stampante, in modo che corrisponda alle impostazioni correnti. Per ulteriori informazioni, vedere Impostazione delle dimensioni, della scala e dell'orientamento.

Impostazione del rendering vettoriale o bitmap

È possibile impostare manualmente il lavoro di stampa in modo che ogni pagina sia inviata allo spooler come grafica vettoriale o immagine bitmap. In alcuni casi, la stampa vettoriale produce file di spool di dimensioni inferiori e un'immagine migliore rispetto alla stampa bitmap. Se tuttavia nel contenuto è presente un'immagine bitmap e si desidera mantenere gli eventuali effetti di colore o di trasparenza alfa, stampare la pagina come immagine bitmap. Le stampanti non PostScript, inoltre, convertono automaticamente la grafica vettoriale in immagini bitmap. Specificare la stampa bitmap nel terzo parametro di PrintJob.addPage(),passando un oggetto PrintJobOptions con il parametro printAsBitmap impostato su true, come riportato di seguito:

var options:PrintJobOptions = new PrintJobOptions();
options.printAsBitmap = true;
myPrintJob.addPage(mySprite, null, options);

Se non si specifica un valore per il terzo parametro, il lavoro di stampa utilizza l'impostazione predefinita, ovvero la stampa vettoriale.

NOTA

 

Se non si desidera specificare un valore per printArea (il secondo parametro) ma un valore per la stampa bitmap, utilizzare null per printArea.

Tempistica delle istruzioni per i lavori di stampa

ActionScript 3.0 non limita un oggetto PrintJob a un fotogramma singolo (come accadeva nelle versioni precedenti di ActionScript). Tuttavia, poiché le informazioni sullo stato di stampa vengono visualizzate dopo aver fatto clic sul pulsante OK nella finestra di dialogo di stampa, è necessario chiamare PrintJob.addPage() e PrintJob.send() il più presto possibile per inviare le pagine allo spooler. Se il fotogramma contenente la chiamata PrintJob.send() viene raggiunto in ritardo, il processo di stampa viene ritardato.

In ActionScript 3.0 è presente un limite di 15 secondi al timeout dello script, pertanto l'intervallo tra ogni istruzione principale in una sequenza del lavoro di stampa non può superare 15 secondi. In altre parole, il limite di timeout dello script di 15 secondi si applica ai seguenti intervalli:

Se uno di questi intervalli supera il limite di 15 secondi, la successiva chiamata a PrintJob.start() nell'istanza di PrintJob restituisce false e la successiva chiamata a PrintJob.addPage() nell'istanza di PrintJob causa la generazione di un'eccezione di runtime da parte di Flash Player.


Flash CS3

 

Inviami un messaggio e-mail quando vengono aggiunti dei commenti a questa | Rapporto sui commenti

Pagina corrente: http://livedocs.adobe.com/flash/9.0_it/main/00000333.html