इवेंट कैलेंडर QR कोड जनरेटर
100% निजी और स्थानीय — आपका डेटा कभी आपके ब्राउज़र से बाहर नहीं जाता। ये QR कोड स्थायी हैं और कभी समाप्त नहीं होंगे।
इवेंट कैलेंडर सेटिंग्स
डिज़ाइन
केंद्र में लोगो जोड़ें
इमेज इसी पेज में पढ़ी जाती है और कोड में data: URL के रूप में जड़ दी जाती है। वह अपलोड नहीं होती, और आपकी डाउनलोड की गई फ़ाइल के भीतर ही रहती है।
अन्य डिज़ाइन विकल्प
कोड का गहरा आधा हिस्सा। इसे पृष्ठभूमि से काफ़ी कम चमकीला रखें।
यह शांत क्षेत्र और मॉड्यूल के बीच की जगह, दोनों को ढकता है। पारदर्शी पृष्ठभूमि इसे फ़ाइल से बाहर रखती है, इसलिए उससे कुछ बनाया ही नहीं जाता।
मॉड्यूल और पृष्ठभूमि के बीच कंट्रास्ट 11.5:1।
PNG और WebP अल्फ़ा चैनल रखते हैं; SVG पृष्ठभूमि का आयत बस छोड़ देता है। कोड जिस भी चीज़ पर रखा जाए, वही कंट्रास्ट का हल्का आधा हिस्सा बन जाती है।
ग्रेडिएंट सिर्फ़ गहरे मॉड्यूल भरता है। स्कैनर को असल में जो कंट्रास्ट मिलता है वह इसके हल्के सिरे से तय होता है, इसलिए दोनों सिरे गहरे रहने चाहिए।
दूसरा रंग, जो सिर्फ़ ग्रेडिएंट चुने होने पर काम आता है। कंट्रास्ट के लिए इसे पहले रंग के साथ ही मापा जाता है।
बाएँ-से-दाएँ बहाव से घड़ी की दिशा में डिग्री। त्रिज्यीय ग्रेडिएंट केंद्र से बाहर की ओर फैलता है, इसलिए कोण सिर्फ़ रैखिक पर लागू होता है।
गोल आकार हर कोष्ठ का कम हिस्सा ढकते हैं। केंद्र ढका रहता है, और डिकोडर वहीं से नमूना लेता है, फिर भी घने कोड की छोटी छपाई वर्गों के रूप में ज़्यादा भरोसे से पढ़ी जाती है।
तीनों फ़ाइंडर पैटर्न का छल्ला।
हर फ़ाइंडर पैटर्न के भीतर की आँख।
कोड के चारों ओर का खाली हाशिया, मॉड्यूल में मापा गया। विनिर्देश में न्यूनतम 4 है।
ऊँची रिकवरी ज़्यादा नुक़सान झेलती है और क्षमता खाती है, इसलिए वही सामग्री घना सिंबल बनाती है।
केंद्र में एक लोगो बैठा है और स्तर को H पर रोके है। उसकी चौड़ाई की सीमा सिंबल के साथ चलती है: सबसे छोटे कोड पर 14%, घने कोड पर 30%।
लाइव पूर्वावलोकन और एक्सपोर्ट
इवेंट का नाम लिखिए। यही कैलेंडर प्रविष्टि का शीर्षक बनता है।
एक्सपोर्ट
रास्टर, स्क्रीन के लिए
डाउनलोड चालू करने के लिए फ़ॉर्म पूरा करें।
एक्सपोर्ट आकार और एन्कोडेड टेक्स्ट
- पेलोड
- अभी कुछ एन्कोड नहीं
- सिंबल
- अभी बना नहीं
- रिकवरी
- M
इनपुट की प्रतीक्षा
पूरा iCalendar इवेंट बनाकर छाप लीजिए। पेलोड स्वयं .ics सामग्री है, इसलिए फ़ोन कहीं से कोई फ़ाइल डाउनलोड किए बिना ही कैलेंडर एंट्री बना सकता है।
जब कोई इसे स्कैन करता है
अधिकतर मौजूदा कैमरा और स्कैनर ऐप BEGIN:VCALENDAR हेडर पहचानकर इवेंट को डिफ़ॉल्ट कैलेंडर में जोड़ने का विकल्प देते हैं, जबकि कुछ पुराने या सीमित स्कैनर उसे टेक्स्ट के रूप में ही दिखा देते हैं।
iCalendar पेलोड, ठीक-ठीक
कोड पूरा RFC 5545 ऑब्जेक्ट ले जाता है, उसका लिंक नहीं। वह BEGIN:VCALENDAR से खुलता है, VERSION:2.0 और इस जनरेटर की पहचान बताने वाला PRODID ले जाता है, एक अकेले VEVENT को लपेटता है, और END:VCALENDAR पर बंद होता है। इवेंट के भीतर UID और DTSTAMP बैठते हैं, जो विनिर्देश की माँग हैं, और उनके साथ DTSTART, DTEND, SUMMARY तथा LOCATION, DESCRIPTION और URL में से जो भी आपने भरे हों।
हर सामग्री पंक्ति कैरिज रिटर्न और लाइन फ़ीड पर, इसी क्रम में, समाप्त होती है। पार्सर इस बारे में सख़्त हैं: सिर्फ़ लाइन फ़ीड इस्तेमाल करने वाला ऑब्जेक्ट ही वह चीज़ है जिससे वरना सही इवेंट भी आयात होने से रह जाता है। 75 ऑक्टेट से लंबी पंक्तियाँ CRLF और उसके बाद एक स्पेस डालकर मोड़ी जाती हैं, और पार्स करने से पहले रीडर उन्हें दोबारा जोड़ लेते हैं — इसीलिए लंबा विवरण ऑब्जेक्ट को तोड़ता नहीं।
चूँकि पूरा इवेंट पैटर्न के भीतर ही रहता है, प्रविष्टि बनाने के लिए फ़ोन को नेटवर्क की ज़रूरत नहीं पड़ती। इसका मतलब यह भी है कि इवेंट जम चुका है: बाद में जगह बदलने का मतलब है नया कोड बनाकर छापना, क्योंकि यहाँ अपडेट करने को कुछ है ही नहीं।
फ़्लोटिंग स्थानीय समय बनाम UTC
फ़्लोटिंग मोड में DTSTART को YYYYMMDDTHHMMSS के रूप में लिखा जाता है, न अंत में Z और न कोई TZID पैरामीटर। RFC 5545 इसे फ़्लोटिंग समय कहता है, और इसका मतलब ठीक वही है जो कहा गया है: 19:00 उस हर डिवाइस पर 19:00 है जो उसे खोले, चाहे वह डिवाइस कहीं भी हो। किसी संगीत कार्यक्रम, बाज़ार के स्टॉल या स्कूल की खुली शाम के लिए लगभग हमेशा यही चाहिए होता है, क्योंकि पोस्टर पढ़ने वाला हर व्यक्ति उसी समय क्षेत्र में खड़ा है जिसमें आयोजन स्थल है।
UTC मोड में वही गुण YYYYMMDDTHHMMSSZ के रूप में लिखा जाता है और अंत का Z उस क्षण को बाँध देता है। हर डिवाइस आयात करते समय उसे स्थानीय समय में बदल लेता है, इसलिए 14:00 UTC पर तय इवेंट Berlin में 15:00 और New York में 09:00 दिखता है। वेबिनार के लिए यही सही चुनाव है और गाँव के मेले के लिए ग़लत।
नाम वाला ज़ोन — DTSTART;TZID=Europe/London — विनिर्देश में तीसरी संभावना है, और यह टूल उसे नहीं देता। उसे ठीक से करने के लिए डेलाइट-सेविंग के बदलावों के पूरे नियमों समेत VTIMEZONE घटक जोड़ना पड़ता है, जो ऐसे पेलोड में कई सौ बाइट और डाल देता है जिसे एक ही सिंबल में समाना है, और जो ऑब्जेक्ट ऐसे TZID का हवाला दे जिसे उसने परिभाषित न किया हो वह अमान्य है। फ़्लोटिंग और UTC छपे हुए पोस्टर वाले मामलों को उस क़ीमत के बिना ढक लेते हैं।
एस्केपिंग, पूरे दिन के इवेंट और आकार
पेलोड में जाने से पहले टेक्स्ट मान विनिर्देश के अनुसार एस्केप किए जाते हैं। पहले बैकस्लैश, फिर सेमीकोलन और कॉमा, फिर पंक्ति विराम; किसी और क्रम में एस्केप करने पर वे बैकस्लैश ही दोबारा एस्केप हो जाते हैं जो आपने अभी डाले थे। टेक्स्ट मान के भीतर कोलन को छोड़ दिया जाता है — RFC 5545 उसे एस्केप करने से साफ़ मना करता है, हालाँकि पुराना RFC 2445 उसकी माँग करता था, और इसीलिए हाथ से लिखे कुछ जनरेटर आज भी यह ग़लत करते हैं।
पूरे दिन का इवेंट तारीख़ वाला रूप लेता है: DTSTART;VALUE=DATE:20260904। उसका DTEND अपवर्जी होता है, इसलिए 4 सितंबर के एक अकेले दिन को DTEND;VALUE=DATE:20260905 के साथ लिखा जाता है। इसे ग़लत करने से ही वह इवेंट बनता है जो एक दिन कम या एक दिन ज़्यादा तक फैला रहता है।
यहाँ व्यावहारिक सीमा आकार है। QR सिंबल सबसे नीचे वाले रिकवरी स्तर पर ज़्यादा से ज़्यादा 2,953 बाइट रखता है, और आपका टेक्स्ट शुरू होने से पहले ही कैलेंडर का ढाँचा अकेले लगभग दो सौ खर्च कर देता है। लंबा विवरण सिंबल को ऊँचे संस्करण पर धकेल देता है जहाँ मॉड्यूल छोटे होते हैं, और तब या तो बड़ी छपाई चाहिए या पास से स्कैन। टाइप करते समय पूर्वावलोकन संस्करण दिखाता रहता है, इसलिए उसे हिलते हुए देखते रहिए।
- बैकस्लैश \\ बन जाता है, सेमीकोलन \; और कॉमा \,
- पंक्ति विराम दो अक्षरों \n में बदल जाता है
- RFC 5545 के टेक्स्ट मानों में कोलन कभी एस्केप नहीं किया जाता
सवाल और जवाब
मेरा फ़ोन कैलेंडर में जोड़ने का संकेत देने के बजाय टेक्स्ट की दीवार क्यों दिखाता है?
स्कैनर को कोई URL नहीं मिला और वह पेलोड दिखाने पर लौट आया। अधिकतर मौजूदा कैमरा ऐप BEGIN:VCALENDAR हेडर पहचानकर इवेंट बनाने का विकल्प देते हैं, पर कोई बहुत सीमित स्कैनर शायद सिर्फ़ लिंक ही सँभालता हो। अलग QR स्कैनर ऐप, या तीसरे पक्ष के ऐप के बजाय फ़ोन का अपना कैमरा, आम तौर पर इसे सुलझा देता है।
क्या एक कोड दोहराया जाने वाला इवेंट रख सकता है?
इस टूल से नहीं। RFC 5545 दोहराव को RRULE गुण से व्यक्त करता है, और सिंटैक्स सघन होने के बावजूद अंतराल, सप्ताह के दिन, गिनती और अपवाद तिथियों के संयोजनों को बिना ग़लती के भरने के लिए अपना एक अलग फ़ॉर्म चाहिए। यह टूल एक शुरुआत और एक अंत वाला एक इवेंट बनाता है।
क्या इवेंट के साथ रिमाइंडर या अलार्म भी जाएगा?
नहीं। VALARM घटक हर कोड में बाइट जोड़कर ऐसी पसंद पूरी करता जिसे स्कैन करने वाला आम तौर पर खुद तय करना चाहता है, और डिफ़ॉल्ट रिमाइंडर का व्यवहार कैलेंडर ऐप के बीच बहुत अलग-अलग है। प्रविष्टि कैलेंडर में उतर जाती है और वही डिफ़ॉल्ट अपना लेती है जो वह कैलेंडर लगाता है।
अगर एक ही छपे कोड को दो लोग स्कैन करें तो क्या होता है?
हर एक को अपने कैलेंडर में एक प्रविष्टि मिलती है। UID इवेंट के विवरण से बनता है, इसलिए दोनों प्रतियों में वही स्ट्रिंग होती है — जो सही ही है, क्योंकि इवेंट एक ही है — पर प्रतियाँ स्वतंत्र हैं। न कोई निमंत्रण है, न उपस्थित लोगों की सूची, और न एक व्यक्ति का किया बदलाव किसी दूसरे तक पहुँचाने का कोई तरीका।
स्थिर QR कोड कैसे काम करता है
इस साइट का हर कोड स्थिर है: पेलोड काले और सफ़ेद मॉड्यूल में ही लिखा जाता है। कोड पढ़े जाते समय कुछ खोजा नहीं जाता, हमारा कोई सर्वर इसमें शामिल नहीं होता, और कोई सब्सक्रिप्शन छपे हुए कोड को थामे नहीं रखता। यही गुण उसकी सीमा भी है — एक बार छप जाने पर उसके भीतर जो है, वह बदला नहीं जा सकता।
फिर तीन बातें तय करती हैं कि छपा कोड पढ़ा जाएगा या नहीं: पेलोड कितने बाइट का हुआ, कौन-सा रिकवरी स्तर नुक़सान सोखता है, और कागज़ पर एक मॉड्यूल कितना चौड़ा बैठता है। ये गाइड इनमें से हर एक को आँकड़ों के साथ देखती हैं।