Flash çalışma zamanı görevleri ve sistem yazdırma

Flash Player 9 ve üstü, Adobe AIR 1.0 ve üstü

Flash çalışma zamanları, işletim sisteminin yazdırma arabirimine sayfalar gönderdiğinden, Flash çalışma zamanları tarafından yönetilen görevlerin ve işletim sisteminin kendi yazdırma arabirimi tarafından yönetilen görevlerin kapsamına dikkat edin. Flash çalışma zamanları bir yazdırma işini başlatabilir, yazıcının sayfa ayarlarından bazılarını okuyabilir, bir yazdırma işinin içeriğini işletim sistemine iletebilir ve kullanıcının veya sistemin bir yazdırma işini iptal edip etmediğini doğrulayabilir. Yazıcıya özgü iletişim kutularını görüntüleme, kuyruğa alınan bir yazdırma işini iptal etme veya yazıcının durumu hakkında bildirim gönderme gibi diğer işlemler, işletim sistemi tarafından işlenir. Flash çalışma zamanları, bir yazdırma işinin başlatılmasıyla veya biçimlendirilmesiyle ilgili bir sorun olduğunda yanıt verebilir ancak işletim sisteminin yazdırma arabiriminden yalnızca belirli özellikler ya da koşullar hakkında bildirim gönderebilir. Bir geliştirici olarak kodunuzun bu özellikleri veya koşulları yanıtlaması gerekir.

İstisnalarla ve döndürmelerle çalışma

Kullanıcının yazdırma işini iptal etmiş olma ihtimaline karşı, addPage() ve send() çağrılarını çalıştırmadan önce, PrintJob.start() yönteminin true değerini döndürüp döndürmediğini kontrol edin. Devam etmeden önce bu yöntemlerin iptal edilmiş olup olmadığını kontrol ermenin basit bir yolu, aşağıdaki gibi, bu yöntemlerin if ifadesinde sarılmasıdır:

if (myPrintJob.start()) 
{ 
    // addPage() and send() statements here 
}

PrintJob.start() öğesi true ise, kullanıcı Print'i seçer (veya Flash Player ya da AIR gibi bir Flash çalışma zamanı, Yazdır komutunu başlatabilir). Bu yüzden, addPage() ve send() yöntemleri çağırılır.

Ayrıca Flash çalışma zamanları yazdırma işleminin yönetilmesine yardımcı olmak üzere PrintJob.addPage() yöntemi için istisnalar atar, böylece hataları yakalayıp kullanıcıya bilgi ve seçenekler sağlayabilirsiniz. PrintJob.addPage() yöntemi başarısız olursa, başka bir işlevi çağırabilir veya geçerli yazdırma işini durdurabilirsiniz. Bu istisnaları yakalamak için, aşağıdaki örnekte görüldüğü gibi, addPage() çağrılarını bir try..catch deyimine gömersiniz. Örnekteki [params] öğesi, yazdırmak istediğiniz gerçek içeriği belirten parametrelerin yer tutucusudur:

if (myPrintJob.start()) 
{ 
    try 
    { 
        myPrintJob.addPage([params]); 
    } 
    catch (error:Error) 
    { 
        // Handle error,  
    } 
    myPrintJob.send(); 
}

Yazdırma işi başlatıldıktan sonra, PrintJob.addPage() öğesini kullanarak içerik ekleyebilir ve bunun bir istisna oluşturup oluşturmadığını (örneğin, kullanıcının yazdırma işini iptal edip etmediğini) görebilirsiniz. İstisna oluşuyorsa, kullanıcıya (veya Flash çalışma zamanına) bilgi ve seçenekler sağlamak için catch deyimine mantık ekleyebilir veya geçerli yazdırma işini durdurabilirsiniz. Sayfayı başarıyla eklerseniz PrintJob.send() öğesini kullanarak sayfaları yazıcıya gönderme işlemine devam edebilirsiniz.

Flash Player veya AIR uygulaması, yazdırma işinin yazıcıya gönderilmesiyle ilgili bir sorunla karşılaşırsa (örneğin, yazıcı çevrimdışı olduğunda), bu istisnayı da yakalayabilir ve bilgi veya daha fazla seçenek sağlayabilirsiniz (örneğin bir mesaj metni görüntüleyerek veya animasyonun içine bir uyarı yerleştirerek). Örneğin, aşağıdaki kodun gösterdiği gibi, bir if..else deyimindeki metin alanına yeni metin atayabilirsiniz:

if (myPrintJob.start()) 
{ 
    try 
    { 
        myPrintJob.addPage([params]); 
    } 
    catch (error:Error) 
    { 
        // Handle error.  
    } 
    myPrintJob.send(); 
} 
else 
{ 
    myAlert.text = "Print job canceled"; 
}

Çalışan bir örnek için bkz. Yazdırma örneği: Ölçekleme, kırpma ve yanıtlama .

Sayfa özellikleriyle çalışma

Kullanıcı Yazdır iletişim kutusunda Tamam'ı tıklatıp PrintJob.start() öğesi true değerini döndürdükten sonra, yazıcının ayarları tarafından tanımlanan özelliklere erişebilirsiniz. Bu ayarlar arasında kağıt genişliği, kağıt yüksekliği ( pageHeight ve pageWidth ) ve kağıtta içeriğin yönlendirmesi yer alır. Bunlar Flash çalışma zamanı tarafından denetlenmeyen yazıcı ayarları olduğundan, bu ayarları değiştiremezsiniz ancak yazıcıya gönderdiğiniz içeriği geçerli ayarlarla eşleşecek şekilde hizalamak için bunları kullanabilirsiniz. Daha fazla bilgi için, bkz. Boyutu, ölçeği ve yönlendirmeyi ayarlama .

Vektör veya bitmap oluşturmayı ayarlama

Her sayfayı vektör grafiği veya bitmap görüntüsü olarak kuyruğa almak için yazdırma işini elle ayarlayabilirsiniz. Bazı durumlarda vektör yazdırma, bitmap yazdırmaya göre daha küçük bir kuyruk dosyası ve daha iyi bir görüntü oluşturacaktır. Ancak içeriğiniz bir bitmap görüntüsü barındırıyorsa ve siz de alfa saydamlığı veya renk efektlerini korumak istiyorsanız, sayfayı bitmap görüntüsü olarak yazdırın. Ayrıca, PostScript olmayan bir yazıcı herhangi bir vektör grafiğini bitmap görüntüsüne dönüştürür.

PrintJobOptions nesnesini PrintJob.addPage() öğesinin üçüncü parametresi olarak geçirerek bitmap yazdırmayı belirtirsiniz.

Flash Player ve AIR 2’den önce AIR için, PrintJobOptions nesnesinin printAsBitmap parametre setini aşağıdaki gibi true olarak ayarlayın:

var options:PrintJobOptions = new PrintJobOptions(); 
options.printAsBitmap = true; 
myPrintJob.addPage(mySprite, null, options);

Üçüncü parametre için bir değer belirtmezseniz, yazdırma işi varsayılan olarak vektör yazdırmayı kullanacaktır.

AIR 2 ve üstü için, PrintJobOptions nesnesinin printMethod özelliğini kullanarak yazdırma yöntemini belirtin. Bu özellik, PrintMethod sınıfında sabit olarak tanımlanan üç değer kabul eder:

  • PrintMethod.AUTO : Yazdırılmakta olan içeriğe göre en iyi yazdırma yöntemini otomatik olarak seçer. Örneğin, bir sayfada metin bulunuyorsa, vektör yazdırma yöntemi seçilir. Ancak, metnin üzerine alfa saydamlığına sahip bir filigran görüntüsü bindirilirse, saydamlığı korumak için bitmap yazdırma seçilir.

  • PrintMethod.BITMAP : İçeriğe bakılmaksızın bitmap yazdırmaya zorlar

  • PrintMethod.BITMAP : İçeriğe bakılmaksızın vektör yazdırmaya zorlar

Yazdırma işi deyimlerini zamanlama

ActionScript 3.0, bir PrintJob nesnesini tek bir kareyle kısıtlamaz. (Önceki ActionScript sürümlerinde bu kısıtlama vardı.) Ancak, kullanıcı Yazdır iletişim kutusunda Tamam düğmesini tıklattıktan sonra işletim sistemi yazdırma durumu bilgilerini kullanıcıya görüntülediğinden, sayfaları kuyruğa göndermek için olabildiğince çabuk şekilde PrintJob.addPage() ve PrintJob.send() öğelerini çağırın. PrintJob.send() çağrısını içeren kareye ulaşan bir gecikme yazdırma işlemini geciktirir.

ActionScript 3.0'da, 15 saniyelik komut dosyası zaman aşımı sınırı vardır. Bu nedenle, bir yazdırma işi sırasındaki her önemli deyim arasındaki süre 15 saniyeden uzun olamaz. Başka bir deyişle, 15 saniyelik zaman aşımı sınıfı şu aralıklar için geçerlidir:

  • PrintJob.start() ile birinci PrintJob.addPage() arasında

  • PrintJob.addPage() ile bir sonraki PrintJob.addPage() arasında

  • Son PrintJob.addPage() ile PrintJob.send() arasında

Bu aralıklardan herhangi biri 15 saniyeden uzun sürerse, PrintJob örneğinde PrintJob.start() öğesine yapılan bir sonraki çağrı false değerini döndürür ve PrintJob örneğindeki bir sonraki PrintJob.addPage() öğesi, Flash Player veya AIR uygulamasının bir çalışma zamanı istisnası atmasına neden olur.