2011-05-10 10 views
20

प्रिंट करना मेरे पास एक ऐसा पृष्ठ है जिसे मैं प्रिंट करने के लिए सेट अप करने की कोशिश कर रहा हूं। इस पृष्ठ में बड़ी संख्या में व्यक्तिगत तालिकाओं हैं। टेबल अलग-अलग आकार के होते हैं, लेकिन सामान्य रूप से, मैं प्रत्येक पृष्ठ पर 2.5 से 3 टेबल फिट कर सकता हूं। मैं टेबल ब्रेक द्वारा टेबल को तोड़ने से रोकने में सक्षम होना चाहता हूं। कोई विचार है कि मैं इसे कैसे पूरा कर सकता हूं?एक तालिका में पेज ब्रेक को रोकना जब

मैंने कोशिश की यह:

.reportTable { 
    page-break-inside: avoid; 
} 

दुर्भाग्य से, page-break-inside केवल ओपेरा में समर्थित किया जा रहा है (W3Schools के अनुसार - मैं पुष्टि की कि फ़ायरफ़ॉक्स 4.0.1 में काम नहीं करता)।

मैं के बाद हर एक टेबल से पहले एक पृष्ठ विराम के लिए मजबूर करने कर सकते हैं:

.reportTable { 
    page-break-after: always; 
} 

यह पृष्ठ विराम सम्मिलित करने के काम करता है और सभी प्रमुख ब्राउज़रों में समर्थित किया जा रहा है, लेकिन यह मुझे की टन के साथ छोड़ देता है मुद्रित दस्तावेजों पर बर्बाद जगह (प्रत्येक पृष्ठ का लगभग आधा खाली है)। मैं वास्तव में केवल एक पृष्ठ तोड़ना चाहता हूं अगर पूरी अगली तालिका इस पृष्ठ पर फिट नहीं होगी।

मुझे पता है कि मेरे पास इंटरनेट एक्सप्लोरर, फ़ायरफ़ॉक्स और सफारी का उपयोग करने वाले उपयोगकर्ता हैं, इसलिए मैं वास्तव में जितना संभव हो उन लोगों का समर्थन करना चाहता हूं। ऐसा कुछ ढूंढना जो क्रोम और ओपेरा में भी काम करेगा, वह बहुत अच्छा बोनस होगा।

कोई विचार?

+0

आप कुछ जावास्क्रिप्ट का उपयोग coul? – microspino

+1

@McGlone: ​​यदि आप अभी भी संदर्भ के रूप में w3schools का उपयोग कर रहे हैं, तो कृपया https://developer.mozilla.org देखें। यह सभी चीजों के वेब के लिए एक और अधिक विस्तृत और व्यापक संदर्भ है। – Pierre

उत्तर

-9

सभी प्रिंटर समान रूप से नहीं बनाए जाते हैं।

आपको समस्याएं हैं क्योंकि प्रिंटर को वेब ब्राउज़र या HTML कोड द्वारा नियंत्रित नहीं किया जाता है। यह प्रिंटर ड्राइवर के साथ आया प्रिंटर ड्राइवर द्वारा नियंत्रित किया जाता है। यह फ़ंक्शन (और इसकी सेटिंग्स) पृष्ठ को प्रस्तुत करने वाले कंप्यूटर के मालिक से संबंधित है, न कि आपके लिए।

आपका कोड पहले से नहीं जान सकता कि उपयोगकर्ता के सिस्टम से जुड़े प्रिंटर कितनी लाइनें पृष्ठ पर रख सकते हैं, या प्रिंटर एक टेबल कैसे रखेगा। यदि अलग प्रिंटर वाले उपयोगकर्ता पृष्ठ खोलता है तो यह अलग होगा। विभिन्न स्क्रीन संकल्पों की तरह, अलग-अलग प्रिंटर पिक्सेल संकल्प भी हैं।

तो विभिन्न स्क्रीन (और उनके नुकसान) पर लागू होने वाले सभी नियम अलग-अलग प्रिंटर पर भी लागू होते हैं। न केवल आपको पता चलेगा कि प्रिंटर एक पृष्ठ को तोड़ देगा, आप यह भी नहीं जान सकते कि मुद्रित पृष्ठ कितना बड़ा है, इस पृष्ठ पर कितनी सामग्री फिट बैठती है।

किसी पृष्ठ पर सभी तालिका (या एकाधिक तालिकाओं) प्राप्त करने के लिए, उपयोगकर्ता को उन हिस्सों का चयन करना चाहिए जिन्हें वह मुद्रित करना चाहते हैं, और फिर प्रिंटर संवाद बॉक्स पर प्रिंट चयन का उपयोग करें।

+0

यह बिल्कुल सही नहीं है। ब्राउज़र एक पोस्टस्क्रिप्ट फ़ाइल आउटपुट करता है जो प्रिंटर को भेजा जाता है। पीएस फ़ाइल उत्पन्न करते समय, ब्राउज़र चुनता है कि पृष्ठों को कैसे लेआउट करें। एकमात्र क्विर्क मार्जिन के साथ है - कुछ प्रिंटर पृष्ठ के कुछ क्षेत्रों में प्रिंट नहीं कर सकते हैं या नहीं। –

+0

-1 प्रश्न में एक उदाहरण है। जाहिर है यह केवल ओपेरा में लागू किया गया है, लेकिन कम से कम यह दिखाता है कि आपके पास ब्राउज़र से कुछ नियंत्रण है। – Christophe

+1

-1 पूरी तरह से झुकाव बकवास करने के लिए। आपको कहाँ से ऐसा सामान मिलता है? – Pierre

1

वर्तमान में, ऐसे ब्राउज़र को मजबूर करने का कोई तरीका नहीं है जो ऐसा करने के लिए page-break-inside: avoid का समर्थन नहीं करते हैं।

हालांकि

, जब से तुम प्रत्येक पृष्ठ पर 2.5 से 3 टेबल फिट और बस एक ही मेज page-break-after: always; का उपयोग कर मुद्रित करने के लिए नहीं पसंद करते हैं कर सकते हैं, आप एक विशेष div है कि हर दो तालिकाओं के बाद एक पृष्ठ विराम बलों डालने के लिए विकल्प चुन सकता है ।

तो आप <div class="pageBreak"></div> शामिल करेंगे और स्क्रीन के लिए इसे छुपाएंगे लेकिन प्रिंटिंग के लिए इसे प्रदर्शित करेंगे। और आप इसे page-break-after: always; की शैली देंगे। इस तरह, आपको प्रति पेज कम से कम दो टेबल मिलते हैं।

एक और सुझाव उपयोगकर्ता को यह तय करने देना होगा कि वह प्रति पृष्ठ एक टेबल मुद्रित करना चाहे या जितना फिट हो सके (कुछ संभवतः पृष्ठों पर विभाजित हो)। page-break-after: always; शैली को तालिका में जोड़ने के लिए आप checkbox टॉगल कर सकते हैं।

4

मैं भी इसका उत्तर ढूंढ रहा हूं। सबसे नज़दीकी आया यह जानने के लिए कि पृष्ठ पर आउटपुट की कितनी लाइनें फिट होंगी, फिर गणना करें कि पेज के आउटपुट की कितनी लाइनें थीं। आपके मामले में: 1) यह पता लगाएं कि आप पृष्ठ पर कितने आउटपुट फिट कर सकते हैं। 2) ट्रैक करें कि आपने अपनी पहली तालिका को प्रदर्शित करके पहले से कितनी लाइनों का उपयोग किया है। 3) गणना करें कि तालिका 2 कितनी पंक्तियां लेंगी। इसे तालिका 1 की लाइनों में जोड़ें और देखें कि क्या आप अभी भी अपने अनुमानित दहलीज से नीचे हैं या नहीं। यदि आप हैं, तो तालिका प्रदर्शित करें, यदि नहीं, पृष्ठ-ब्रेक के साथ एक div नीचे डालें: हमेशा एक नई तालिका को मजबूर करने के लिए इसमें।

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

हालांकि मुझे एक सेलआउट के अंदर की सामग्री या प्रिंटआउट पेज में धुआं जाने पर कुछ ऐसी चीज में लपेटने के लिए तथ्य नहीं हुआ है।

आशा है कि आपके लिए एक विचार चमकता है।

+0

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

0

यह सिर्फ बनाने # टेबल ठीक करने के लिए {पेज ब्रेक के बाद: ऑटो;}

संबंधित मुद्दे