2011-11-08 7 views
7

में छोटे फ़ॉन्ट हमारे वेब एप्लिकेशन में, हमारे पास हमारे कुछ पृष्ठों के लिए प्रिंट कार्यक्षमता है और हमारे द्वारा उठाए जाने वाले दृष्टिकोण को वर्तमान पृष्ठ की सामग्री को विश्व स्तर पर उपलब्ध आईफ़्रेम में रखना है दस्तावेज और iframe मुद्रित करें (जावास्क्रिप्ट का उपयोग कर)। यह फ़ायरफ़ॉक्स में पूरी तरह से ठीक काम करता है लेकिन आईई में यह आईफ्रेम को बहुत छोटे फ़ॉन्ट में प्रिंट करता है, लगभग अपठनीय।आईई पर iframe.print बनाम window.print - पूर्व

सभी सीएसएस दोनों ब्राउज़रों में लागू होते हैं, मैंने यह सुनिश्चित किया है कि मुद्रित एचटीएमएल किसी भी तरह से बह रहा नहीं है (आईई को सामग्री या कुछ फिट करने के लिए) ... और अभी भी आईई प्रिंट बहुत छोटा है। दिलचस्प बात यह है कि अगर मैं एक नई विंडो में लिखने के लिए प्रिंटिंग तर्क बदलता हूं और फिर window.print() करता हूं, तो सब कुछ आईई में भी ठीक काम करता है और फ़ॉन्ट सीएसएस द्वारा आवश्यक/निर्दिष्ट जितना बड़ा होता है।

क्या किसी को आईई में iframe.print() के साथ एक ही समस्या का सामना करना पड़ा है?

सहायता के लिए धन्यवाद।

नितिन

+0

क्या आपके पास प्रिंट करने के लिए कोई सीएसएस विशिष्ट है? –

+0

शुरुआत में यह नहीं था लेकिन मैंने बिना किसी सहायता के एक बनाया। यहां तक ​​कि विशिष्ट प्रिंट सीएसएस आईई के साथ छोटे फ़ॉन्ट में आईफ्रेम प्रिंट करता है। – legendofawesomeness

उत्तर

0

पर IE9 उपयोग कर रहा है iframe.print के बजाय) window.print (उपयोग किया गया()।

1

हां, हम वही चीज़ देख रहे हैं। यदि हम उसी पृष्ठ को सीधे खोलते हैं तो यह प्रिंट करता है जैसा आप उम्मीद करेंगे। जब यह एक आईफ्रेम में लोड होता है और मुद्रित होता है तो यह सबकुछ छोटा हो जाता है; न सिर्फ फ़ॉन्ट।

यह अंतिम समाधान है कि मैं अपनाया विंडोज 7

4

मुझे इस मुद्दे को एक ही मुद्दे से जूझने के बाद मिला। ऐसा लगता है कि यह व्यवहार IE11 में भी जारी रहता है। अच्छी खबर यह है कि मैं एक नई विंडो खोलने के बिना समाधान ढूंढने में सक्षम था और फिर window.print() पर कॉल कर रहा था।

चाल आईई में document.execCommand का उपयोग करना है (आईई 11 तक सभी तरह से काम करता है), और अन्य ब्राउज़रों में iframe.print() पर गहराई से वापस आना। पूर्ण समाधान कुछ इस तरह दिख सकता है (एक iframe चयन करने के लिए jQuery का उपयोग कर, लेकिन वह पूरी तरह से वैकल्पिक है):

var target = $('iframe')[0]; 
try { 
    target.contentWindow.document.execCommand('print', false, null); 
} catch(e) { 
    target.contentWindow.print(); 
} 

यह समाधान यहाँ से IE7 के बारे में एक बहुत पुरानी धागा से प्रेरित था: http://bytes.com/topic/misc/answers/629926-ie7-printing-iframe-solution। हालांकि, यह अभी भी प्रासंगिक है।

+0

यह आईई 11.0.9600.16659 पर मेरे लिए काम नहीं किया। Iframe की सामग्री मुद्रित करने का प्रयास करते समय फ़ॉन्ट आकार अभी भी छोटा है। – justanotherprogrammer

+1

एक गैर-प्रोग्रामेटिक पक्ष से, जब मैं सेटिंग्स -> प्रिंट -> पेज सेटअप पर गया और बॉक्स 'श्रिंक-टू-फिट सक्षम करें' बॉक्स को अनचेक किया, तो पाठ का आकार सामान्य आकार में लौटा। – justanotherprogrammer

+0

समाधान फ़ायरफ़ॉक्स में काम नहीं करता है। [ContentWindow.document देखें।execCommand ('प्रिंट', झूठी, शून्य) फ़ायरफ़ॉक्स में काम नहीं कर रहा है] (http://stackoverflow.com/questions/25323371/contentwindow-document-execcommandprint-false-null-not-working-in-firefox)। मैंने क्रोम और आईई में परीक्षण समाधान की गलती की और इस समस्या को हल किया लेकिन मुझे उत्पादन में कोड जारी किए जाने तक एफएफ तोड़ने के बारे में पता नहीं चला। मुझे मूर्ख। – Karl

0

"हेस्टन लिबोनिट्ज" के रूप में लिखा गया है, "execCommand" का उपयोग एक अच्छा विचार और समाधान है। लेकिन मैं IE के लिए if-condition सेट करता हूं, क्योंकि यह समस्या केवल आईई के मामले में दिखाई देती है। नीचे मेरी सुझाव है:

// Get the iframe element 
var oIFrame = $('#iF_Print').get(0); 
// Fix for IE : Allow it to render the iframe 
oIFrame.focus(); 

var bMS_IE = false; 
// Verify whether the browser is Internet Explorer (IE8,IE9,IE10 -> "msie", but for IE11 the name is changed into "trident"). 
var userAgent = window.navigator.userAgent.toLowerCase(); 
bMS_IE = ((userAgent.indexOf('msie ') > -1) || (userAgent.indexOf("trident/") > -1))?true:false; 

if (bMS_IE) { 
     try { 
      oIFrame.document.execCommand('print', false, null); 
     }catch(e) { 
      window.print(); 
     } 
}else { 
    oIFrame.print(); 
} 
3

आज आईई मुद्दे पर छोटे प्रिंट हो रही थी, और मैं बस मेरी प्रिंट समारोह के रूप में इस प्रकार समायोजित ठीक करने के लिए:

$(document).ready(function(){ 
$("#printFrame").click(function(){  
    if (document.queryCommandSupported('print')) 
    { 
     $("#iframe").get(0).contentWindow.document.execCommand('print', false, null); 
    } 
    else 
    { 
     $("#iframe").get(0).contentWindow.focus(); 
     $("#iframe").get(0).contentWindow.print(); 
    } 
    }); 
}); 

अब ऐसा लगता है बाहर ही पर मुद्रित करने के लिए आईई, क्रोम और फ़ायरफ़ॉक्स। यहां पोस्ट किया गया क्योंकि यह समाधान मेरे लिए खोजना मुश्किल था, इसलिए उम्मीद है कि यह किसी की मदद करेगा।