2009-06-10 29 views
24

İçinde gömülü PDF bulunan bir web sayfam var. Benim kod şöyle görünür:Gömülü PDF gömülü yazdırma

bu kod Acrobat eklentiyi yürütüldüğünde
function printDocument(documentId) { 

    //Wait until PDF is ready to print  
    if (typeof document.getElementById(documentId).print == 'undefined') { 

     setTimeout(function(){printDocument(documentId);}, 1000); 

    } else { 

     var x = document.getElementById(documentId); 
     x.print(); 
    } 
} 

tanınmış yazdırma iletişim kutusu açar:

<embed 
    type="application/pdf" 
    src="path_to_pdf_document.pdf" 
    id="pdfDocument" 
    width="100%" 
    height="100%"> 
</embed> 

Ben baskı benim PDF için bu javascript kodu var. Böyle bir şey:

PrintDialog

İki soru:

  • Bu nasıl PDF algılamak için bir yol geliştirmek için yüklendi ve baskı için hazır mı?
  • Yazdırma iletişim kutusunu nasıl göstermekten kaçınılır?

benim sistem hakkında biraz daha bilgi:

OS: Windows XP

Tarayıcı: Internet Explorer 7

PDF eklentisi: Acrobat Reader 9

+0

@gideon bu yani hata Web sayfası hata ayrıntıları Mesaj vermek ... ie8 ff veya kromdan üretilen .... çalışmaz: 5 Kod: 0 URI: http: i uyarı belge yüklendikten sonra bile gelmeyip almak devam typeof eğer içinde alert() koymak eğer //localhost/mpdf/pdf.php –

cevap

18

Düz eski JavaScript ile sessizce yazdıramayacaksınız. Yazıcınızın tüm siyahın 100000000 sayfasını yazdırmaya nasıl başlamasını istersiniz? İyi bir şey değil. Sessiz yazdırmak ve sadece Internet Explorer için çalışmasını istiyorsanız, bunu yapabileceğiniz ActiveX denetimleri var. Bu, sayfanız için daha yüksek güvenlik ayarları gerektirir ve kullanıcılarınız için sitenize gerçekten güvenir.

+0

Teşekkürler, kurumsal intranet için İnternet için değil, güvendeler! :-) Beni bu ActiveX'e yönlendirebilir misin? Bunu değerlendiririm. – sourcerebels

+0

Bence onun noktası, tarayıcının sessiz baskıya izin vermesi durumunda bir güvenlik deliği olmasıydı. Bu nedenle, bir tarayıcı/eklentinin buna izin vermediği tasarım gereğidir. Bu çözüm kabul edildiğinden – JohnFx

+0

Teknoloji biraz değişti. İşte bazılarının sessizce PDF'lerini istediği gibi sessizce yazdırabilen bazı sessiz yazdırma çözümleri. http://stackoverflow.com/questions/27057816 – tresf

1

Baskıdan önce beklemeniz gerekip gerekmediğini merak ediyorum - Baskı işi senin için halledecek mi? Ve gerçekten modern bir tarayıcının (veya bu konudaki herhangi bir web sitesinin) bu onaylama diyaloğu olmadan yazdırmasına izin vermeyeceğini umuyorum (bazı eski tarayıcılar bunu yapmak için uzun süre önce kullanmışlardır).

+0

Merhaba Arjan Hızlı cevabınız için teşekkürler. PDF dosyası yüklenmeden önce .print yöntemini çağırırsam, Javascript hatası alıyorum, 'bu yöntem için bu yönteme izin verilmiyor' (ispanyolca hata mesajını alıyorum). İkinci değerlemede, PDF'nin tarayıcı tarafından basılmadığını düşünüyorum, Acrobat eklentisi :-) tarafından yazdırılıyor :-) – sourcerebels

+0

Ancak bu eklenti herhangi birinin tarayıcısında mevcut olabilir, değil mi? Eğer öyleyse, o onayın kaybolmasını beklemiyorum. PDF öğeniz yüklenmeden önce gövde öğesi için etkinleştirme olayı çalışıyor mu? – Arjan

+0

Oh, Internet Explorer'ın gömülü olması için onload'ı desteklediği görülüyor: http://msdn.microsoft.com/en-us/library/cc197055(VS.85).aspx – Arjan

1

Bunu, Firefox'ta about:config değiştirerek yapabilirsiniz. print.always_print_silent ekleyin ve true olarak ayarlayın.

4

Bu, güvenilir, Intranet ortamında mümkündür.

<object id="pdfDoc" style="position:absolute;z-index:-1;" name="pdfDoc" classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="900px" height="100%"> 
     <param name="SRC" value="yourdoc.pdf" /> 
    </object> 

<input type="button" ... onclick="pdfDoc.printAll();" /> 

Bu, yazdırma iletişim kutusunu atlayacak ve doğrudan varsayılan yazıcıya gönderecektir. null veya bir nesne Hattı 'sıfır': 26 Char nedense

+5

Bu yöntemi FF veya Safari'de çalışmak için kullanamadım. Bu IE sadece mi? – Karl

+0

Milyonlarca kez teşekkürler. IE9'da kusursuz çalışır. Beni kurtardın!!! –