← Back to HTML Course | Chapter 8: Modern HTML & Components | Lesson 3 of 10

HTML Print Styles

सोचिए आप किसी लंबी वेबसाइट रसीद या इनवॉइस पर प्रिंट बटन दबाते हैं। लेकिन साफ, पठनीय डॉक्यूमेंट के बजाय, आपका प्रिंटर छह पन्ने निकालता है, जिनमें काले साइडबार कॉलम्स, इंटरैक्टिव नेविगेशन मेनू, प्रमोशनल बैनर्स, और आधे-खाली शीट्स भरी हैं। HTML print styles इस समस्या को हल करते हैं। ये आपको खास डिज़ाइन नियम लागू करने देते हैं, जो सिर्फ तब चलते हैं जब आपका पेज फिज़िकल पेपर पर प्रिंट किया जाता है। इंटरैक्टिव नेविगेशन मेनू छिपाकर, भारी बैकग्राउंड फिल्स हटाकर, और टेक्स्ट कलर्स को साफ ब्लैक-एंड-व्हाइट में एडजस्ट करके, आप सुनिश्चित करते हैं कि आपकी रसीदें और टिकट स्याही बचाते हुए खूबसूरती से प्रिंट हों।
Syntax
markup
<style>
  @media print {
    selector { property: value; }
  }
</style>

Print मीडिया क्वेरी

आप print मीडिया क्वेरी का उपयोग करके ऐसे CSS नियम लिख सकते हैं जो सिर्फ तब चलें जब आपका वेबपेज प्रिंटर को भेजा जाए। यह आपको अपने पेज लेआउट को फिज़िकल पेपर डायमेंशन्स के लिए पूरी तरह कस्टमाइज़ करने देता है।

Note: अपने ब्राउज़र के प्रिंट प्रीव्यू मेनू (Ctrl+P या Cmd+P) को खोलकर अपने print styles को आसानी से टेस्ट करें।
Warning: अपने print styles में कभी भी भारी बैकग्राउंड कलर्स का इस्तेमाल न करें, क्योंकि प्रिंटर्स डिफॉल्ट रूप से इन्हें इग्नोर कर देंगे या स्याही बर्बाद कर देंगे।

उदाहरण: The Print Media Query

markup
<style>
  @media print {
    body {
      font-size: 12pt;
    }
  }
</style>

इंटरैक्टिव एलिमेंट्स छुपाना

किसी वेबपेज को प्रिंट करते समय, इंटरैक्टिव एलिमेंट्स (जैसे sidebars, नेविगेशन मेनू, और submit बटन्स) कागज़ पर पूरी तरह बेकार होते हैं और इन्हें display: none प्रॉपर्टी का उपयोग करके छुपा देना चाहिए।

Note: कागज़ पर विशेष एलिमेंट्स को जल्दी छुपाने के लिए no-print नाम की एक CSS यूटिलिटी क्लास बनाएँ।
Warning: सुनिश्चित करें कि आप अपनी नेविगेशन बार्स के साथ-साथ गलती से ज़रूरी कंटेंट (जैसे डॉक्यूमेंट डिस्क्रिप्शन) न छिपा दें।

उदाहरण: Hiding Interactive Elements

markup
<style>
  @media print {
    .no-print {
      display: none;
    }
  }
</style>
<nav class="no-print">Navigation</nav>

रंगों और बैकग्राउंड को फिर से फॉर्मैट करना

प्रिंटर्स चमकीले रंग या डार्क बैकग्राउंड अच्छी तरह प्रिंट नहीं करते। इंक बचाने और अपने डॉक्यूमेंट्स को पढ़ने योग्य बनाए रखने के लिए, आपके print styles में एक साफ, सफेद बैकग्राउंड पर हाई-कॉन्ट्रास्ट काला टेक्स्ट इस्तेमाल होना चाहिए।

Note: अगर आपको बैकग्राउंड रंगों को बिल्कुल भी प्रिंट कराना ज़रूरी हो, तो CSS प्रॉपर्टी color-adjust: exact; का उपयोग करें।
Warning: ज़्यादातर ब्राउज़र स्याही बचाने के लिए बैकग्राउंड कलर्स को अपने-आप प्रिंट होने से ब्लॉक कर देते हैं, इसलिए अपने लेआउट्स को सफेद कागज़ पर साफ-सुथरा काम करने के लिए डिज़ाइन करें।

उदाहरण: Reformatting Colors and Backdrops

markup
<style>
  @media print {
    body {
      background-color: white;
      color: black;
    }
  }
</style>

Page Breaks को नियंत्रित करना

प्रिंटर्स कागज़ की लंबाई के आधार पर कंटेंट को अलग-अलग फिज़िकल शीट्स में बाँट देते हैं। इसकी वजह से headings किसी पेज के सबसे नीचे प्रिंट हो सकती हैं, जबकि उनके पैराग्राफ अगली शीट पर अलग हो जाते हैं।

आप page breaks कहाँ हों यह नियंत्रित करने के लिए CSS प्रॉपर्टीज़ (जैसे break-before या break-inside) का उपयोग कर सकते हैं।

Note: table rows और image cards को दो पेजेज़ में बँटने से बचाने के लिए उन पर break-inside: avoid; का उपयोग करें।
Warning: बहुत सारे एलिमेंट्स पर break-before: always; लगाने से प्रिंटर ज़्यादातर खाली पन्ने निकाल सकता है।

उदाहरण: Controlling Page Breaks

markup
<style>
  @media print {
    tr {
      break-inside: avoid;
    }
  }
</style>

टेक्स्ट के बगल में Link URLs दिखाना

फिज़िकल कागज़ के टुकड़े पर, क्लिक करने योग्य लिंक्स बेकार होते हैं क्योंकि रीडर उन पर क्लिक नहीं कर सकते। कागज़ पढ़ने वालों को आपके रेफरेंस किए गए पेजेज़ ढूँढने में मदद के लिए, आप अपने लिंक टेक्स्ट के बगल में असली URL path को अपने-आप प्रिंट कराने के लिए CSS pseudo-elements का उपयोग कर सकते हैं।

Note: इस तकनीक का उपयोग खासतौर पर absolute लिंक्स के लिए करें ताकि रीडर आपकी रेफरेंस की गई वेबसाइट्स ढूँढ सकें।
Warning: relative लिंक URLs (जैसे '/contact.html') प्रिंट करने से बचें, क्योंकि कागज़ पर ये किसी काम के नहीं होते।

उदाहरण: Displaying Link URLs next to Text

markup
<style>
  @media print {
    a::after {
      content: " (" attr(href) ")";
    }
  }
</style>
Live Example
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.