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):
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;
|
|
|
|
|