Ställa in storlek, skala och orientering

Flash Player 9 och senare, Adobe AIR 1.0 och senare

I avsnittet Skriva ut en sida beskrivs ett grundläggande utskriftsjobb, där utskriften direkt återspeglar den utskrivna motsvarigheten till skärmstorleken och placeringen av angiven sprite. Skrivare använder ju olika upplösningar och de kan ha inställningar som påverkar utseendet av den utskrivna spriten negativt.

Flash-miljöerna kan läsa ett operativsystems utskriftsinställningar, men observera att dessa egenskaper är skrivskyddade: även om du kan svara på deras värden kan du inte ställa in dem. Du kan till exempel hitta skrivarens sidstorleksinställning och justera innehållet så att det passar storleken. Du kan också bestämma en skrivares marginalinställningar och sidorientering. Om du vill svara på skrivarinställningarna måste du ange ett utskriftsområde, justera för olikheter mellan en skärms upplösning och en skrivarens punktmått eller transformera innehållet så att det stämmer överens med storleks- och orienteringsinställningarna för användarens skrivare.

Använda rektanglar för utskriftsområdet

Med metoden PrintJob.addPage() kan du ange område för den sprite du vill skriva ut. Den andra parametern printArea, är i form av ett Rectangle-objekt. Du kan ange ett värde för den här parametern på tre olika sätt:

  • Skapa ett Rectangle-objekt med speciella egenskaper och använda rektangeln i anropet addPage() på det här sättet:

    private var rect1:Rectangle = new Rectangle(0, 0, 400, 200); 
    myPrintJob.addPage(sheet, rect1);
  • Om du inte redan har specificerat ett Rectangle-objekt kan du göra det inom själva anropet på det här sättet:

    myPrintJob.addPage(sheet, new Rectangle(0, 0, 100, 100));
  • Om du tänker ange värden för den tredje parametern i anropet addPage() men inte vill ange en rektangel, kan du använda null för den andra parametern på det här sättet;

    myPrintJob.addPage(sheet, null, options);

Jämföra punkter och pixlar

Rektangelns bredd och höjd är pixelvärden. För en skrivare används punkter som utskriftsmåttenheter. Punkter har fast fysisk storlek (1/72 tum) medan en pixels storlek beror på bildskärmens upplösning. Därför beror konverteringsförhållandet mellan pixlar och punkter på skrivarinställningarna och om spriten är skalad. En oskalad sprite som är 72 pixlar bred skrivs ut en tum bred, där en punkt är lika med en pixel, oavsett skärmens upplösning.

Du kan konvertera tum eller centimeter till twip eller punkter (en twip är 1/20 punkt) med följande ekvivalenser:

  • 1 punkt = 1/72 tum = 20 twip

  • 1 tum = 72 punkter = 1440 twip

  • 1 centimeter = 567 twip

Om du utelämnar parametern printArea eller om den skickas felaktigt skrivs hela området för sprite ut.

Skalning

Om du vill skalförändra ett Sprite-objekt innan du skriver ut det anger du skalningsegenskaperna (se Ändra storlek och skaländra objekt ) innan du anropar metoden PrintJob.addPage() , och när utskriften är klar sätter du tillbaka ursprungsvärdena. Sprite-objektets skala har ingenting med egenskapen printArea att göra. Det innebär, att om du anger att utskriften ska vara 50 x 50 pixlar, skrivs 2 500 pixlar ut. Om du har skalat Sprite-objektet skrivs samma 2 500 pixlar ut, men Sprite-objektet skrivs ut i den skalade storleken.

Ett exempel finns i Exempel på utskrift: skala, beskära och svara .

Utskrift med liggande eller stående orientering

Eftersom inställningarna för orientering identifieras av Flash Player och AIR kan du skapa logik i ActionScript som justerar innehållets storlek och rotation som svar på skrivarinställningarna, vilket visas i följande exempel:

if (myPrintJob.orientation == PrintJobOrientation.LANDSCAPE) 
{ 
    mySprite.rotation = 90; 
}
Obs! Om du vill läsa systeminställningen för innehållsorientering på pappret måste du importera klassen PrintJobOrientation . Klassen PrintJobOrientation ger konstanta värden som definierar innehållets orientering på papperet. Importera klassen med följande programsats:
import flash.printing.PrintJobOrientation;

Svara på sidhöjd och sidbredd

Om du använder en strategi som liknar hantering av skrivarens orienteringsinställningar kan du läsa inställningarna för sidhöjd och sidbredd och svara på dem genom att bädda in viss logik i en if -programsats. I följande kod finns ett exempel:

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

En sidas marginalinställningar kan dessutom bestämmas genom att sidan och pappersmåtten jämförs, vilket visas i följande exempel:

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