Einrichten von Größe, Skalierung und Ausrichtung

Flash Player 9 und höher, Adobe AIR 1.0 und höher

Im Abschnitt Drucken einer Seite werden ausführlich die Schritte für einen einfachen Druckauftrag beschrieben, bei dem die Druckausgabe genau der Bildschirmgröße und -position des angegebenen Sprite-Objekts entspricht. Bei verschiedenen Druckern kommen jedoch unterschiedliche Druckauflösungen zum Einsatz. Zudem können Druckeinstellungen festgelegt sein, die sich nachteilig auf die Darstellung des gedruckten Sprite-Objekts auswirken.

In Flash-Laufzeitumgebungen können die Druckeinstellungen des Betriebssystems gelesen werden. Es handelt sich dabei jedoch um schreibgeschützte Eigenschaften: Sie können diese Werte zwar anzeigen, jedoch nicht ändern. Sie können beispielsweise die Einstellung des Druckers für die Seitengröße ermitteln und den Inhalt dann so anpassen, dass er dieser Größe entspricht. Sie können auch die Einstellungen für die Seitenränder und die Seitenausrichtung eines Druckers ermitteln. Um den Inhalt entsprechend den Druckereinstellungen anzupassen, sollten Sie einen Druckbereich festlegen, die Unterschiede zwischen der Bildschirmauflösung und den Punktmaßen des Druckers abgleichen oder den Inhalt so ändern, dass er den Einstellungen für die Seitengröße und die Ausrichtung des Druckers entspricht.

Verwenden von Rectangle-Objekten für den Druckbereich

Mit der PrintJob.addPage() -Methode können Sie den Druckbereich für ein Sprite-Objekt festlegen. Der zweite Parameter printArea hat die Struktur eines Rectangle-Objekts. Sie haben drei Möglichkeiten, den Wert für diesen Parameter anzugeben:

  • Sie können ein Rectangle-Objekt mit bestimmten Eigenschaften erstellen und dieses Objekt dann im addPage() -Aufruf verwenden, wie im folgenden Beispiel dargestellt:

    private var rect1:Rectangle = new Rectangle(0, 0, 400, 200); 
    myPrintJob.addPage(sheet, rect1);
  • Wenn Sie zuvor kein Rectangle-Objekt angegeben haben, können Sie es im Aufruf direkt angeben, wie im folgenden Beispiel dargestellt:

    myPrintJob.addPage(sheet, new Rectangle(0, 0, 100, 100));
  • Wenn Sie Werte für den dritten Parameter im addPage() -Aufruf angeben, jedoch kein Rectangle-Objekt festlegen möchten, können Sie für den zweiten Parameter null angeben, wie im folgenden Beispiel dargestellt:

    myPrintJob.addPage(sheet, null, options);

Punkt und Pixel im Vergleich

Breite und Höhe eines Rechtecks werden in Pixel angegeben. Bei Druckern wird die Druckmaßeinheit Punkt verwendet. Punkt ist eine feste Größe (1/72 Zoll), die Größe eines Pixels richtet sich jedoch nach der jeweiligen Auflösung des Bildschirms. Der Umrechnungsfaktor zwischen Pixel und Punkt hängt daher von den Druckereinstellungen und davon ab, ob das Sprite skaliert ist. Ein nicht skalierter Sprite mit einer Breite von 72 Pixel wird mit einer Breite von 1 Zoll gedruckt. Dabei entspricht ein Punkt einem Pixel, unabhängig von der Bildschirmauflösung.

Zoll- oder Zentimeterangaben können folgendermaßen in Twip oder Punkt umgerechnet werden (ein Twip ist 1/20 Punkt):

  • 1 Punkt = 1/72 Zoll = 20 Twip

  • 1 Zoll = 72 Punkt = 1440 Twip

  • 1 cm = 567 Twip

Wenn Sie den Parameter printArea weglassen oder falsch übergeben, wird der gesamte Sprite-Bereich gedruckt.

Skalieren

Wenn Sie ein Sprite-Objekt vor dem Drucken skalieren möchten, legen Sie die Skalierungseigenschaften (siehe Ändern der Größe und Skalieren von Objekten ) vor dem Aufrufen der PrintJob.addPage() -Methode fest und setzen Sie sie nach dem Drucken wieder auf die ursprünglichen Werte zurück. Die Skalierung eines Sprite-Objekts hat keinen Bezug zur printArea -Eigenschaft. Wenn Sie beispielsweise einen Druckbereich mit der Größe 50 x 50 Pixel festlegen, werden 2500 Pixel gedruckt. Wenn Sie das Sprite-Objekt skalieren, werden dieselben 2500 Pixel in der skalierten Größe gedruckt.

Ein Beispiel finden Sie unter Druckbeispiel: Skalieren, Zuschneiden und Anpassen .

Drucken im Querformat oder Hochformat

Da es in Flash Player und AIR möglich ist, die Einstellungen für die Druckausrichtung zu ermitteln, können Sie ActionScript-Code programmieren, mit dem die Größe oder Drehung des Inhalts entsprechend den Druckereinstellungen angepasst werden, wie im folgenden Beispiel dargestellt:

if (myPrintJob.orientation == PrintJobOrientation.LANDSCAPE) 
{ 
    mySprite.rotation = 90; 
}
Hinweis: Wenn Sie die Systemeinstellungen für die Ausrichtung des Inhalts auf dem Papier einlesen möchten, denken Sie daran, die PrintJobOrientation-Klasse zu importieren. Die PrintJobOrientation-Klasse enthält Konstanten, mit denen die Ausrichtung des Inhalts auf der Seite definiert wird. Sie importieren die Klasse mit der folgenden Anweisung:
import flash.printing.PrintJobOrientation;

Anpassen der Seitenhöhe und Seitenbreite

Ähnlich wie bei den Druckereinstellungen für die Druckausrichtung können Sie die Einstellungen für die Seitenhöhe und die Seitenbreite ermitteln und entsprechend anpassen, indem Sie Code in eine if -Anweisung einbetten. Der folgende Code ist ein Beispiel hierfür:

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

Zusätzlich können die Einstellungen für die Seitenränder durch einen Vergleich der Seiten- und Papierabmessungen ermittelt werden, wie im folgenden Beispiel dargestellt:

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