AIR'ye PDF içeriği ekleme

Adobe AIR 1.0 ve üstü

Adobe® AIR®'de çalışan uygulamalar yalnızca SWF ve HTML içeriği değil, PDF içeriği de oluşturabilir. AIR uygulamaları, HTMLLoader sınıfını, WebKit motorunu ve Adobe® Reader® tarayıcı eklentisini kullanarak PDF içeriği oluşturur. AIR uygulamasında, PDF içeriği uygulamanızın tam yükseklik ve genişliğine göre veya alternatif olarak arabiriminin bir parçası olarak uzayabilir. Adobe Reader tarayıcı eklentisi, AIR uygulamasında PDF dosyalarının görüntülenmesini kontrol eder. Okuyucu araç menüsü arabiriminde yapılan değişiklikler (konum, sabitleme ve görünürlük), hem AIR uygulamalarındaki hem de tarayıcıdaki PDF dosyalarının daha sonra görüntülenmesini devam ettirir

Önemli: Kullanıcı, AIR uygulamasında PDF içeriği oluşturmak için Adobe Reader ya da Adobe® Acrobat® 8.1 veya daha yeni bir sürümü yüklemiş olmalıdır.

PDF Özelliklerini Saptama

Kullanıcı Adobe Reader veya Adobe Acrobat 8.1 ya da daha yeni bir sürüme sahip değilse, PDF içeriği AIR uygulamasında görüntülenmez. Kullanıcının PDF içeriği oluşturup oluşturamayacağını saptamak için ilk önce HTMLLoader.pdfCapability özelliğini kontrol edin. Bu özellik HTMLPDFCapability sınıfının aşağıdaki sabitlerinden biri olarak ayarlanır:

Sabit

Açıklama

HTMLPDFCapability.STATUS_OK

Yeterli bir Adobe Reader sürümü (8.1 veya daha yeni) saptandı ve PDF içeriği bir HTMLLoader nesnesine yüklenebilir.

HTMLPDFCapability.ERROR_INSTALLED_READER_NOT_FOUND

Herhangi bir Adobe Reader sürümü saptanmadı. Bir HTMLLoader nesnesi PDF içeriğini görüntüleyemez.

HTMLPDFCapability.ERROR_INSTALLED_READER_TOO_OLD

Adobe Reader saptandı, ancak sürüm çok eski. Bir HTMLLoader nesnesi PDF içeriğini görüntüleyemez.

HTMLPDFCapability.ERROR_PREFERRED_READER_TOO_OLD

Yeterli bir Adobe Reader sürümü (8.1 veya daha yeni) saptandı, ancak Adobe Reader'ın PDF içeriğini işlemek üzere ayarlanan sürümü Reader 8.1'den eski. Bir HTMLLoader nesnesi PDF içeriğini görüntüleyemez.

Windows'ta, kullanıcının sisteminde Adobe Acrobat veya Adobe Reader 7.x ya da daha yeni bir sürüm çalışmaktaysa, PDF yüklemeyi destekleyen daha yeni bir sürüm yüklenmiş olsa bile bu sürüm kullanılır. Bu durumda, pdfCampability özelliğinin değeri HTMLPDFCapability.STATUS_OK ise, AIR uygulaması PDF içeriğini yüklemeye çalıştığında daha eski Acrobat veya Reader sürümü bir uyarı görüntüler (ve AIR uygulamasında istisna verilmez). Bu son kullanıcılarınız için olası bir durumsa, onlara uygulamanızı çalıştırdıkları sırada Acrobat'ı kapatmalarına ilişkin talimatlar vermeyi deneyebilirsiniz. PDF içeriği kabul edilebilir bir zaman diliminde yüklenmiyorsa, bu talimatları görüntülemek isteyebilirsiniz.

Linux'ta, AIR kullanıcının dışa aktardığı PATH içinde (acroread komutunu içeriyorsa) ve /opt/Adobe/Reader dizininde Adobe Reader'ı arar.

Aşağıdaki kod bir kullanıcının bir AIR uygulamasında PDF içeriği görüntüleyebilip görüntülemeyeceğini algılar. Kullanıcı PDF görüntüleyemezse kod, HTMLPDFCapability hata nesnesine denk gelen hata kodunu izler.

if(HTMLLoader.pdfCapability == HTMLPDFCapability.STATUS_OK)  
{ 
    trace("PDF content can be displayed"); 
} 
else  
{ 
    trace("PDF cannot be displayed. Error code:", HTMLLoader.pdfCapability); 
} 

PDF içeriği yükleme

Bir HTMLLoader örneği oluşturarak, bu örneğin boyutlarını ayarlayarak ve PDF yolunu yükleyerek AIR uygulamasına bir PDF ekleyebilirsiniz.

Aşağıdaki örnek, harici bir siteden PDF yükler. URLRequest öğesini kullanılabilir harici bir PDF'ye giden yolla değiştirin.

var request:URLRequest = new URLRequest("http://www.example.com/test.pdf"); 
pdf = new HTMLLoader(); 
pdf.height = 800; 
pdf.width = 600; 
pdf.load(request); 
container.addChild(pdf);

app ve app-storage gibi dosya URL'leri ve AIR'ye özgü URL şemalarından da içerik yükleyebilirsiniz. Örneğin, aşağıdaki kod uygulama dizininin PDF alt dizinindeki test.pdf dosyasını yükler:

app:/js_api_reference.pdf

AIR URL şemaları hakkında daha fazla bilgi için bkz. URI şemaları.

Komut dosyası PDF içeriği

PDF içeriğini tarayıcıdaki web sayfasındaki gibi kontrol etmek için JavaScript'i kullanabilirsiniz.

Acrobat'a ilişkin JavaScript geliştirmeleri aşağıdaki ek özellikleri sunar:

  • Sayfa gezinmesini denetleme ve büyütme

  • Belge içinde formları işleme

  • Multimedya olaylarını denetleme

Adobe Acrobat'a yönelik JavaScript geliştirmelerine ilişkin tüm ayrıntılar http://www.adobe.com/devnet/acrobat/javascript.html adreslerindeki Adobe Acrobat Geliştirici Bağlantısı'nda sunulmuştur.

HTML-PDF iletişim temelleri

HTML sayfasındaki JavaScript, PDF içeriğini temsil eden DOM nesnesinin postMessage() yöntemini çağırarak PDF içeriğindeki JavaScript'e mesaj gönderebilir. Örneğin, aşağıdaki gömülü PDF içeriğini dikkate alın:

<object id="PDFObj" data="test.pdf" type="application/pdf" width="100%" height="100%"/>

Mevcut HTML içeriğinde aşağıdaki JavaScript kodu, PDF dosyasındaki JavaScript'e bir mesaj gönderir:

pdfObject = document.getElementById("PDFObj"); 
pdfObject.postMessage(["testMsg", "hello"]);

PDF dosyası, bu mesajın alınması için JavaScript'i dahil edebilir. Belge, klasör, sayfa, alan düzeyi ve toplu düzey bağlamları dahil bazı bağlamlardaki PDF dosyalarına JavaScript kodu ekleyebilirsiniz. Burada yalnızca, PDF dokümanı açıldığında değerlendirilen komut dosyalarını tanımlayan belge düzeyi bağlamı tartışılır.

PDF dosyası hostContainer nesnesine messageHandler özelliğini ekleyebilir. messageHandler özelliği, mesajları yanıtlamak için işleyici işlevlerini tanımlayan bir nesnedir. Örneğin aşağıdaki kod, PDF dosyası tarafından ana bilgisayar kabından (PDF dosyasını içeren HTML içeriği) alınan mesajları işlemeye yönelik işlevi tanımlar:

this.hostContainer.messageHandler = {onMessage: myOnMessage}; 
 
function myOnMessage(aMessage) 
{ 
    if(aMessage[0] == "testMsg") 
    { 
        app.alert("Test message: " + aMessage[1]); 
    } 
    else 
    { 
        app.alert("Error"); 
    } 
}

HTML sayfasındaki JavaScript kodu, sayfada yer alan PDF nesnesinin postMessage() yöntemini çağırabilir. Bu yöntemin çağrılması, PDF dosyasındaki belge düzeyinde JavaScript'e bir mesaj ("Hello from HTML") gönderir:

<html> 
    <head> 
    <title>PDF Test</title> 
    <script> 
        function init() 
        { 
            pdfObject = document.getElementById("PDFObj"); 
            try { 
                 pdfObject.postMessage(["alert", "Hello from HTML"]); 
            } 
            catch (e) 
            { 
                alert( "Error: \n name = " + e.name + "\n message = " + e.message ); 
            } 
        } 
    </script> 
    </head> 
    <body onload='init()'> 
        <object 
            id="PDFObj" 
            data="test.pdf" 
            type="application/pdf" 
            width="100%" height="100%"/> 
    </body> 
</html>

Daha gelişmiş bir örnek için ve bir PDF dosyasına JavaScript eklemek üzere Acrobat 8 kullanımıyla ilgili bilgi almak için bkz. Adobe AIR uygulamasında PDF içeriğinde çapraz komut dosyası oluşturma.

ActionScript'ten PDF içeriği için komut dosyası

ActionScript kodu (SWF içeriğindeki), PDF içeriğindeki JavaScript ile doğrudan iletişim kuramaz. Ancak, ActionScript PDF içeriğini yükleyen bir HTMLLoader nesnesinde yüklenen HTML sayfasındaki JavaScript ile iletişim kurabilir ve bu JavaScript kodu, yüklenen PDF sayfasındaki JavaScript ile iletişim kurabilir. Daha fazla bilgi için bkz. AIR uygulamasında HTML ve JavaScript programlama.

AIR'de PDF içeriği için bilinen sınırlamalar

Adobe AIR'deki PDF içeriği aşağıdaki sınırlamaları içerir:

  • PDF içeriği saydam (transparent özelliğinin true olarak ayarlandığı) bir pencerede (bir NativeWindow nesnesi) görüntülenemez.

  • Bir PDF dosyasının görüntü düzeni, AIR uygulamasındaki diğer display nesnelerinden farklı çalışır. PDF içeriği HTML görüntü düzenine göre doğru biçimde kesilse de, her zaman AIR uygulamasının görüntü düzenindeki içeriğin en üstünde bulunacaktır.

  • PDF belgesi içeren HTMLLoader nesnesinin belirli görsel özellikleri değiştirildiğinde, PDF belgesi görünür duruma gelir. Bu özellikler filters, alpha, rotation, ve scaling özelliklerini içerir. Bu özelliklerin değiştirilmesi PDF dosyasını, özellikler sıfırlanana kadar görünmez duruma getirir. Bu durum, HTMLLoader nesnesi içeren display nesne kabının özelliklerini değiştirdiğinizde de geçerlidir.

  • PDF içeriği yalnızca PDF içeriğine sahip NativeWindow nesnesinin Stage nesnesine ilişkin scaleMode özelliği StageScaleMode.NO_SCALE olarak ayarlandığında görünür. Bunun dışında herhangi bir değere ayarlandığında, PDF içeriği görünmez.

  • PDF dosyası içindeki içerik bağlarının tıklatılması, PDF içeriğinin kaydırma konumunu günceller. PDF dosyasının dışındaki içerik bağlarının tıklatılması, PDF içeren HTMLLoader nesnesini yeniden yönlendirir (bağın hedefi yeni bir pencere olsa da).

  • PDF yorum oluşturma iş akışları AIR'de çalışmaz.