हाँ, और कुछ भी इंस्टॉल किए बिना। प्रत्येक उत्पन्न एप्लिकेशन में एक प्रिंट स्टाइलशीट शामिल होती है: Ctrl+P, या “PDF के रूप में सहेजें”, स्क्रीन पर दिख रहे किसी भी थीम के बावजूद, नेविगेशन रहित, काले रंग के अक्षरों वाला एक A4 पृष्ठ उत्पन्न करता है। सारांश अवस्था इससे आगे जाती है: इसमें एक निश्चित “प्रिंट” बटन होता है, इसके रंग के समतल क्षेत्रों को सटीक रूप से पुनर्प्रस्तुत किया जाता है, और पृष्ठ विभाजन कभी भी किसी *राशि दर्शाने वाली पंक्ति* को दो भागों में नहीं काटते। लेकिन यह जानना ज़रूरी है कि PDF ब्राउज़र द्वारा उत्पन्न किया जाता है, कोई संलग्न लाइब्रेरी नहीं, इसलिए आपके पत्राचार शीर्षक पर कोई चालान टेम्पलेट नहीं है, न ही स्वतः ईमेल भेजने की सुविधा है। यह पृष्ठ ठीक-ठीक बताता है कि प्रिंटर से क्या निकलता है, और क्या नहीं निकलता।
हर एप्लिकेशन में उपलब्ध: एक साफ़ A4 पृष्ठ
प्रिंट स्टाइलशीट कोई सक्रिय करने योग्य विकल्प नहीं है: यह प्रत्येक उत्पन्न एप्लिकेशन की स्टाइलशीट में ही लिखी गई होती है, और केवल प्रिंट करते समय ही लागू होती है, स्क्रीन पर दिखाई देने वाला रेंडरिंग पूरी तरह समान रहता है। इसका कार्य चार मुख्य कार्यों में समाहित है। यह A4 फॉर्मेट निर्धारित करती है जिसमें प्रिंटर द्वारा सम्मानित किए जाने वाले सुरक्षित मार्जिन होते हैं। यह पृष्ठ से सभी ऐसे तत्वों को हटा देती है जिनका प्रिंट पर होना आवश्यक नहीं है: पार्श्व नेविगेशन रेल, ऊपरी बार, सत्र फुटर, Blueprint बैज और कोई भी तत्व जिसे “प्रिंट न करें” के रूप में चिह्नित किया गया हो, खुद “प्रिंट” बटन भी इसी श्रेणी में आता है, इसलिए यह कभी भी प्रिंट आउटपुट पर नहीं दिखाई देता।
इसके बाद यह प्रिंट के समय सक्रिय थीम के बावजूद पृष्ठभूमि को सफेद और शब्दों को काला कर देती है: डार्क मोड में दिख रहा एप्लिकेशन भी काला पृष्ठ नहीं देता, और कार्ट्रिज के अत्यधिक उपयोग के बिना ही पर्याप्त कंट्रास्ट सुनिश्चित करता है। अंत में, जो सबसे कम दिखाई देने वाला लेकिन सबसे उपयोगी बिंदु है, यह एप्लिकेशन को एक दस्तावेज़ का व्यवहार देती है। स्क्रीन पर एप्लिकेशन विंडो की पूरी ऊँचाई घेरता है और उसका सामग्री अंदर स्क्रॉल होती है; प्रिंट करते समय यह तंत्र एक पृष्ठ को पहली स्क्रीन ऊँचाई पर काट देता, जिससे अधूरा पृष्ठ बन जाता। इन नियमों के द्वारा इस तंत्र को निष्क्रिय कर दिया जाता है: ऊँचाई सामग्री के अनुसार समायोजित हो जाती है, और चालीस पंक्तियों की सूची जितने पृष्ठों की आवश्यकता होगी, उतने पृष्ठों पर प्रिंट हो जाएगी।
सारांश अवस्था: एक तैयार दस्तावेज़, जिसमें अपना बटन है
सारांश अवस्था का अनुभाग, एक संख्यात्मक सारांश, या शीर्षकों वाला दस्तावेज़, स्वभाव से ही कागज़ या PDF के लिए बनाया जाता है। इसलिए इसमें जनरेटर द्वारा निश्चित रूप से रखा गया “प्रिंट” बटन होता है, जिसके लिए कोई निर्भरता या नेटवर्क कॉल की आवश्यकता नहीं होती: यह ब्राउज़र के प्रिंट फ़ंक्शन को ट्रिगर करता है, और खुद प्रिंट आउटपुट से छिपा रहता है। दस्तावेज़ को इसके अनुरूप पुनर्गठित किया जाता है: ड्रॉप शैडो गायब हो जाती है, गोल कोने सीधे हो जाते हैं, चौड़ाई पूरे पृष्ठ के बराबर हो जाती है, और आंतरिक क्षैतिज स्क्रॉलिंग को निष्क्रिय कर दिया जाता है ताकि कोई भी सामग्री पृष्ठ के बाहर न रहे।
एक स्क्रीनशॉट और एक वास्तविक दस्तावेज़ के बीच दो बातें अंतर करती हैं। पहली: रंग के समतल क्षेत्र, शीर्षक पट्टी, कुल राशि की पंक्ति, उप-कुल, को सटीक रूप से पुनर्प्रस्तुत किया जाता है, जबकि ब्राउज़र इन्हें प्रिंट करते समय डिफ़ॉल्ट रूप से सफेद कर देते हैं: इस नियम के बिना, कुल राशि की पंक्ति उसी विशेषता को खो देती, जो इसे अन्य पंक्तियों से अलग करती है। दूसरी: पृष्ठ विभाजन नियंत्रित किए जाते हैं, कोई भी राशि की पंक्ति कभी भी दो पृष्ठों के बीच में नहीं काटी जाती, और कोई भी शीर्षक पृष्ठ के नीचे अकेला नहीं छोड़ा जाता, वह उन पंक्तियों के साथ जाता है जिनकी घोषणा वह करता है।
PDF ब्राउज़र से आता है, और यह एक जानबूझी चुनाव है
डिलीवर किए गए एप्लिकेशन में कोई PDF उत्पादन लाइब्रेरी संलग्न नहीं होती: PDF आपके ब्राउज़र के प्रिंट डायलॉग द्वारा “PDF के रूप में सहेजें” के माध्यम से उत्पन्न किया जाता है। इस चुनाव के दोनों ओर असर होते हैं, और उन्हें जानना बेहतर है। अच्छी ओर: यह ऑफ़लाइन काम करता है, इसकी कोई लागत नहीं है, इससे कोई रखरखाव योग्य निर्भरता नहीं जुड़ती, और यह फ़ोन से लेकर कंप्यूटर तक कहीं भी काम करता है। कम अच्छी ओर: यह एक हाथ से किया जाने वाला कार्य है, “ग्राहक को PDF भेजें” जैसा कोई बटन नहीं है, और शीर्षक, पादलेख और फ़ाइल का नाम ब्राउज़र की सेटिंग्स से आते हैं, न कि एप्लिकेशन से।
पंक्ति-आधारित दस्तावेज़ों के लिए, जैसे आदेश का सारांश, या विस्तृत अवस्था, जब आपके डेटा की संरचना इसका समर्थन करती है, तो जनरेटर संबंधित लेआउट उत्पन्न करना जानता है: एक माता-पिता, उससे जुड़ी पंक्तियाँ, और एक पंक्ति की राशि जो पंक्ति के क्षेत्रों से *प्रत्येक प्रदर्शन पर* पुनः गणना की जाती है। यह अंतिम बिंदु कोई शौकीन विशेषता नहीं है: प्रत्येक प्रदर्शन पर पुनः गणना की गई राशि अपने घटकों से कभी विचलित नहीं हो सकती, जबकि संग्रहीत राशि की कोई जाँच नहीं की जा सकती। जब संरचना अस्पष्ट होती है, तो जनरेटर गलत दस्तावेज़ बनाने के बजाय खुद को रोक लेता है, कोई दस्तावेज़ झूठा दस्तावेज़ से बेहतर है।
यह क्या नहीं बदलता
स्पष्ट शब्दों में कहें तो: यह कोई चालान जनरेशन मॉड्यूल नहीं है। इसमें आपके पत्राचार शीर्षक पर कोई चालान टेम्पलेट नहीं है, कोई कानूनी अंकन नहीं है, कोई स्वतः जोड़ी गई अनिवार्य टिप्पणियाँ नहीं हैं, न ही ग्राहक को भेजने की सुविधा है, और विनियामक अर्थ में एक इलेक्ट्रॉनिक चालान वास्तव में PDF नहीं होता, बल्कि एक संरचित प्रारूप होता है जो एक मान्यता प्राप्त प्लेटफ़ॉर्म के माध्यम से भेजा जाता है, जिस पर एक समर्पित प्रश्न में चर्चा की गई है। प्रिंटिंग का उद्देश्य दूसरी आवश्यकता को पूरा करना है, जो दैनिक जीवन में उठती है: एक पठनीय पृष्ठ तैयार करना जिसे आप किसी को दे सकें, कार्यशाला में लगा सकें, निर्माण स्थल पर ले जा सकें या फ़ाइल कर सकें।
कागज़ के बजाय डेटा को साझा करने के लिए, प्रत्येक सूची में CSV निर्यात बटन भी होता है, जो आपके द्वारा देखी जा रही पंक्तियों को निर्यात करता है और बटन पर उनकी संख्या दिखाता है। और यदि एक वास्तविक PDF जनरेटर की आवश्यकता पड़ जाए, जैसे आपके ब्रांड के अनुसार टेम्पलेट, अंकन, या स्वतः भेजने की सुविधा, तो उसे जोड़ना अभी भी संभव है: डिलीवर किया गया कोड एक सामान्य Next.js और Prisma प्रोजेक्ट है जो आपका है, और कोई डेवलपर उसमें आवश्यक चीज़ें जोड़ सकता है। यह तैयार-के-उपयोग के रूप में प्रदान नहीं किया जाता; यह केवल संभव है, जो किसी बंद उपकरण के साथ नहीं होता।