Formaat, schaal en afdrukstand instellen

Flash Player 9 of hoger, Adobe AIR 1.0 of hoger

In de sectie Pagina afdrukken worden de stappen beschreven voor een elementaire afdruktaak, waarbij de uitvoer rechtstreeks de afgedrukte equivalent is van de schermgrootte en schermpositie van de opgegeven Sprite. Printers gebruiken voor het afdrukken echter verschillende resoluties en kunnen instellingen hebben die een ongunstig effect hebben op de weergave van de afgedrukte Sprite.

Flash runtimes kunnen de afdrukinstellingen van het besturingssysteem lezen, maar deze eigenschappen zijn alleen-lezen: u kunt wel op de waarden reageren, maar u kunt ze niet instellen. U kunt bijvoorbeeld de printerinstellingen voor het paginaformaat opvragen om de inhoud aan dat formaat aan te passen. U kunt ook de marge-instellingen en afdrukstand van de printer opvragen. U kunt op die printerinstellingen reageren door een afdrukgebied op te geven, het verschil tussen de schermresolutie en de puntgrootte van de printer te compenseren of de inhoud aan te passen aan de formaat- of afdrukstandinstellingen van de printer van de gebruiker.

Rechthoeken gebruiken voor het afdrukgebied

Met de methode PrintJob.addPage() kunt u het gebied opgeven voor een Sprite die u wilt afdrukken. De tweede parameter, printArea , wordt opgegeven in de vorm van een object Rectangle. U kunt op drie manieren een waarde voor deze parameter opgeven:

  • Maak een object Rectangle met specifieke eigenschappen en gebruik die rechthoek in de aanroep van addPage() , zoals getoond in het volgende voorbeeld:

    private var rect1:Rectangle = new Rectangle(0, 0, 400, 200); 
    myPrintJob.addPage(sheet, rect1);
  • Als u nog geen object Rectangle hebt opgegeven, kunt u dat alsnog in de aanroep zelf doen, zoals getoond in het volgende voorbeeld:

    myPrintJob.addPage(sheet, new Rectangle(0, 0, 100, 100));
  • Als u waarden wilt opgeven voor de derde parameter in de aanroep van addPage() , maar geen rechthoek wilt opgeven, kunt u null als tweede parameter gebruiken, zoals getoond in het volgende voorbeeld:

    myPrintJob.addPage(sheet, null, options);

Punten en pixels vergelijken

De hoogte en breedte van een rechthoek worden uitgedrukt in pixelwaarden. Een printer werkt met punten als afdrukeenheden. Punten hebben een vast, fysiek formaat (1/72 inch), maar de grootte van een pixel op het scherm is afhankelijk van de resolutie van dat specifieke beeldscherm. Hoe pixels in punten worden omgezet, is afhankelijk van de printerinstellingen en of de Sprite is geschaald. Een niet-geschaalde Sprite die 72 pixels breed is, wordt ongeacht de schermresolutie met een breedte van één inch afgedrukt, waarbij één punt gelijk is aan één pixel.

U kunt de volgende equivalenten gebruiken om inches of centimeters om te zetten in twips of punten (een twip is 1/20 punt):

  • 1 punt = 1/72 inch = 20 twips

  • 1 inch = 72 punten = 1440 twips

  • 1 centimeter = 567 twips

Als u de parameter printArea weglaat of als deze onjuist wordt doorgegeven, wordt het volledige gebied van de Sprite afgedrukt.

Schalen

Als u een object Sprite wilt schalen voordat u dit afdrukt, stelt u de schaaleigenschappen in (zie Grootte manipuleren en objecten schalen ) voordat u de methode PrintJob.addPage() aanroept en stelt u deze eigenschappen na het afdrukken weer in op de oorspronkelijke waarden. De schaal van een object Sprite is niet gekoppeld aan de eigenschap printArea . Met andere woorden, als u een afdrukgebied van 50 bij 50 pixels opgeeft, worden er 2500 pixels afgedrukt. Als u het object Sprite schaalt, worden ook 2500 pixels afgedrukt, maar wordt het object met de geschaalde grootte afgedrukt.

Een voorbeeld vindt u in Voorbeeld van afdrukken: schalen, bijsnijden en reageren .

Liggend of staand afdrukken

Omdat Flash Player en AIR de instellingen voor de afdrukstand kunnen detecteren, kunt u logica in uw ActionScript opnemen om de grootte of afdrukstand aan te passen op basis van de printerinstellingen, zoals getoond in het voorbeeld:

if (myPrintJob.orientation == PrintJobOrientation.LANDSCAPE) 
{ 
    mySprite.rotation = 90; 
}
Opmerking: Als u van plan bent de systeeminstelling te lezen voor de afdrukstand van de inhoud op het papier, moet u eraan denken om de klasse PrintJobOrientation te importeren. De klasse PrintJobOrientation biedt constante waarden die de afdrukstand van de inhoud op de pagina bepalen. U importeert de klasse met de volgende instructie:
import flash.printing.PrintJobOrientation;

Reageren op de hoogte en breedte van het papier

Met behulp van een strategie die lijkt op het omgaan met de printerinstellingen voor de afdrukstand, kunt u de pagina-instellingen voor hoogte en breedte lezen en daarop reageren door logica in te sluiten in een instructie if . In de volgende code wordt een voorbeeld gegeven:

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

Bovendien kunnen de marge-instellingen van een pagina worden bepaald door de afmetingen van pagina en papier te vergelijken, zoals in het voorbeeld hieronder wordt getoond:

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