Impostazione delle dimensioni, della scala e dell'orientamento

Flash Player 9 e versioni successive, Adobe AIR 1.0 e versioni successive

Nella sezione Stampa di una pagina è descritta in dettaglio la procedura per un lavoro di stampa di base, in cui l'output riflette direttamente l'equivalente su carta delle dimensioni dello schermo e della posizione dello sprite specificato. Le stampanti utilizzano tuttavia risoluzioni diverse per la stampa e possono avere impostazioni che influiscono negativamente sull'aspetto dello sprite stampato.

I runtime di Flash sono in grado di leggere le impostazioni della stampante del sistema operativo, ma queste proprietà sono di sola lettura: è possibile rispondere ai relativi valori, ma non impostarli. Quindi è possibile, ad esempio, verificare l'impostazione del formato carta della stampante e adattare il contenuto al formato e, inoltre, determinare le impostazioni dei margini e l'orientamento della pagina della stampante. Per rispondere alle impostazioni della stampante, specificate un'area di stampa, regolate la differenza tra la risoluzione dello schermo e le misure in punti della stampante oppure trasformate il contenuto affinché corrisponda alle impostazioni relative alle dimensioni e all'orientamento della stampante in uso.

Utilizzo di rettangoli per l'area di stampa

Il metodo PrintJob.addPage() consente di specificare l'area di uno sprite che si desidera stampare. Il secondo parametro, printArea, è rappresentato da un oggetto Rectangle. Sono disponibili tre opzioni per fornire un valore a questo parametro:

  • Create un oggetto Rectangle con proprietà specifiche e quindi utilizzate il rettangolo nella chiamata a addPage() , come illustrato nell'esempio riportato di seguito:

    private var rect1:Rectangle = new Rectangle(0, 0, 400, 200); 
    myPrintJob.addPage(sheet, rect1);
  • Se non avete già specificato un oggetto Rectangle, potete effettuare questa operazione all'interno della chiamata, come illustrato nell'esempio riportato di seguito:

    myPrintJob.addPage(sheet, new Rectangle(0, 0, 100, 100));
  • Se prevedete di specificare dei valori per il terzo parametro nella chiamata a addPage() , ma senza specificare un rettangolo, potete utilizzare null come secondo parametro, come riportato di seguito:

    myPrintJob.addPage(sheet, null, options);

Confronto tra punti e pixel

La larghezza e l'altezza del rettangolo sono espresse in pixel. L'unità di misura di stampa utilizzata da una stampante è il punto. I punti hanno dimensioni fisiche fisse (1/72 di pollice), mentre le dimensioni di un pixel dipendono dalla risoluzione specifica dello schermo. Il tasso di conversione tra pixel e punti varia a seconda delle impostazioni della stampante e se lo sprite è stato modificato in scala. Un oggetto sprite non modificato in scala largo 72 pixel viene stampato con una larghezza di un pollice, con un punto equivalente a un pixel, indipendentemente dalla risoluzione dello schermo.

È possibile utilizzare le seguenti equivalenze per convertire pollici o centimetri in twip o punti (un twip corrisponde a 1/20 di punto):

  • 1 punto = 1/72 di pollice = 20 twip

  • 1 pollice = 72 punti = 1440 twip

  • 1 centimetro = 567 twip

Se omettete il parametro printArea oppure se questo viene passato in modo non corretto, viene stampata l'intera area dello sprite.

Ridimensionare

Per modificare in scala un oggetto Sprite prima della stampa, impostatene le proprietà (vedete Manipolazione delle dimensioni e modifica in scala degli oggetti ) prima di chiamare il metodo PrintJob.addPage() utilizzando nuovamente i rispettivi valori originali dopo la stampa. La scala di un oggetto Sprite non ha alcuna relazione con la proprietà printArea . In altre parole, se specificate un'area di stampa di 50 x 50 pixel, vengono stampati 2500 pixel. Se si modifica in scala l'oggetto Sprite, vengono stampati gli stessi 2500 pixel ma l'oggetto viene stampato nelle dimensioni modificate in scala.

Per un esempio, vedete Esempio di stampa: modifica in scala, ritaglio e risposta .

Stampa con orientamento verticale o orizzontale

Poiché Flash Player e AIR sono in grado di rilevare le impostazioni relative all'orientamento, potete inserire nel codice ActionScript la logica necessaria per regolare le dimensioni o la rotazione del contenuto in risposta alle impostazioni della stampante, come illustrato nell'esempio riportato di seguito:

if (myPrintJob.orientation == PrintJobOrientation.LANDSCAPE) 
{ 
    mySprite.rotation = 90; 
}
Nota: se prevedete di leggere le impostazioni di sistema per l'orientamento del contenuto nella pagina, ricordate di importare la classe PrintJobOrientation . La classe PrintJobOrientation fornisce i valori costanti che definiscono l'orientamento del contenuto nella pagina. Per importare la classe, utilizzate l'istruzione seguente:
import flash.printing.PrintJobOrientation;

Risposta ai valori di altezza e larghezza della pagina

Utilizzando una strategia analoga alla gestione delle impostazioni di orientamento della stampante, è possibile leggere le impostazioni relative all'altezza e alla larghezza della pagina e rispondere incorporando la logica in un'istruzione if . Nel codice seguente viene presentato un esempio:

if (mySprite.height > myPrintJob.pageHeight) 
{ 
    mySprite.scaleY = .75; 
}

Inoltre, è possibile determinare le impostazioni dei margini della pagina confrontando le dimensioni della pagina e del foglio, come nell'esempio riportato di seguito:

margin_height = (myPrintJob.paperHeight - myPrintJob.pageHeight) / 2; 
margin_width = (myPrintJob.paperWidth - myPrintJob.pageWidth) / 2;