Phantomjs - सी # - process - waitforexit


मैं एक वेब साइट के स्क्रीन शॉट को पढ़ने में सक्षम होना चाहता हूं, और मैं फाटकॉम और एएसपी का इस्तेमाल करने का प्रयास कर रहा हूं। मैंने पृष्ठ का उपयोग करने की कोशिश की है। रेंडर जो एक फ़ाइल में स्क्रीन शॉट को बचाएगा। यह एक कंसोल अनुप्रयोग के रूप में काम करता है, लेकिन जब मैं इसे एस्प हैंडलर से कॉल नहीं करता संभवतः यह फ़ाइल अनुमतियों के कारण हो सकता है, क्योंकि सरल अनुप्रयोग (जैसे हैलो। जेएस) ठीक काम करते हैं। यह ठीक है, मेरी वरीयता फाइल में लिखना नहीं होगी, लेकिन बाइट से निपटने के लिए और एक छवि सीधे हेन्डलर से वापस करने के लिए मैं यह कैसे करना है के रूप में एक बिट खो दिया है मैंने पृष्ठ. renderbase64 नामक एक विधि को देखा, लेकिन इसका उपयोग कैसे करें वर्तमान में मैं एक IHttpHandler का उपयोग कर रहा हूँ यहां एक समान सवाल है, लेकिन उस व्यक्ति ने अंतिम रूप से फोंटमज को छोड़ दिया। मुझे इसे देखना पसंद है और अगर संभव हो तो इसका उपयोग करना जारी रखना चाहते हैं I फ़ंट्मज चलाना सी का उपयोग करने के लिए वेबपेज के स्नैपशॉट को पकड़ने के लिए मैं एक मजेदार छोटी परियोजना अभी चल रहा है जिसमें वेब पेज का एक भाग लेना है, इसे फैंटमजेएस में लोड करना, डेटा की एक गहराई से गुजरना, पेज की एक तस्वीर लेना और प्रदर्शित करना एक आरडीएलसी रिपोर्ट में वह छवि यह पूरा करने के लिए एक अलग तरह के तरीके हैं, इसलिए नीचे हैकर्स संकल्पना का प्रमाण है। सबसे पहले, हमें निम्न तत्वों के साथ एक बहुत ही सरल वेब पृष्ठ की आवश्यकता है: छिपे हुए इनपुट डेटा वाला एक प्रपत्र तत्व जिसका उपयोग प्राथमिक ऐप्लिकेशन से स्टब पृष्ठ पर डेटा स्थानांतरित करने के लिए किया जाएगा। दो और इनपुट ऊँचाई और चौड़ाई, जिसका उपयोग केवल प्रेत को कमांड लाइन तर्क दिखाने के लिए किया जाता है। एक बटन जो एक जावास्क्रिप्ट फ़ंक्शन को ट्रिगर करने के लिए उपयोग किया जा सकता है जो पृष्ठ को फिर से आकर्षित करेगा। उम्मीद है कि यह स्पष्ट है कि मेरी JJScript पद्धति init () my. js में, डिस्प्ले के लिए कंटेनर डिवेल में हर चीज को आसानी से निष्पादित करेगी। अगले तत्व की आवश्यकता है, ढेर को ऊपर ले जाना, यह हमारा जावास्क्रिप्ट रनर है कि हम फेंटम को पास करेंगे, इस पूरी प्रक्रिया को बंद कर देंगे। स्टेंटेजेज के लिए फाइल सिस्टम कॉल का ध्यान रखें, इसे पारित किया जा सकता है, लेकिन, मैंने एक फाइल सिस्टम को दिखाया है जो किसी के लिए उपयोगी हो सकता है। हम प्रेत के पथ को स्थापित करने से हमारी सी विधि शुरू करते हैं (ध्यान दें: आप अपने रास्ते में प्रेत को जोड़ सकते हैं, इसे पास कर सकते हैं, इसलिए कोई जादू नहीं है आदि)। अगला हमें प्रेत के लिए कमांड लाइन तर्क सेट अप करने की आवश्यकता है: ऊपर से हमारे जावास्क्रिप्ट रनर फ़ाइल का सापेक्ष पथ। पृष्ठ ऊंचाई पेज चौड़ाई मानक इन, आउट एप त्रुटि को पुनः निर्देशित करते हुए फैंटम के लिए प्रोसेस पर्यावरण की स्थापना करके जारी रखें जो प्रेत के साथ बातचीत को सक्षम करेगा। अंतिम दो प्रक्रिया सेटिंग्स प्रक्रिया लॉन्च और शैल निष्पादन को निष्क्रिय करने के लिए (शैल निष्पादन पर विवरण के लिए एमएसडीएन डॉक्स देखें) फैंटम के साथ चल रहे हैं और हम रीडायरेक्ट मानक इनपुट स्ट्रीम के संदर्भ ले सकते हैं, हमारे डेटा को सीरियल कर सकते हैं हमारे प्रेत प्रक्रिया को इनपुट स्ट्रीम का समापन प्रेत में पेज मूल्यांकन को चालू करेगा चेतावनी यह ध्यान दिया जाना चाहिए कि प्रेत 1.9.7 के रूप में एक स्टडीन की पढ़ाई एक अवरुद्ध कॉल है। हालांकि, 2.0 के लिए एक सुविधा अनुरोध है जो इस एसिंक को डिफ़ॉल्ट रूप से बना देगा। यदि आप इस तकनीक का उपयोग कर रहे हैं तो आप भविष्य में चीजें बदलते हुए उस चरण में पढ़ने के लिए stdin पर रक्षात्मक रूप से ब्लॉक करना चाहते हैं। अंतिम चरण है stdout से बाइट्स को रोना, यह सुनिश्चित करने के लिए कि प्रक्रिया के WaitForExit विधि को कॉल करने के बाद आप stdout के संदर्भ लेते हैं। आदेश यह सुनिश्चित करेगा कि आप stdout की सभी सामग्री को पढ़ते हैं। अंत में, स्ट्रिंग को एक बाइट सरणी और रिटर्न में कनवर्ट करें। जैसा कि मैंने शुरूआत में उल्लेख किया था, आप अपनी बाइट सरणी को एक डाटासेट में जोड़ सकते हैं, फिर डेटासेट पर एक आरडीएलसी का एक छवि तत्व मैप कर सकते हैं, जिससे आपको रिपोर्ट के लिए गतिशील छवि सामग्री मिलती है। आप संभावित रूप से एकीकरण परीक्षण में इस तकनीक का उपयोग करके सुनिश्चित कर सकते हैं कि पृष्ठ पर मौजूद तत्वों की स्थिति स्थानांतरित नहीं हुई है। या एक वेबसाइट की स्थिति को बचाने और सहेजने के लिए एक सरल संग्रह तकनीक के रूप में भी।

Comments

Popular posts from this blog

विदेशी मुद्रा के लिए गैर वैध

Sygnaly - विदेशी मुद्रा - 60062

सूचकांक विदेशी मुद्रा पीडीएफ