2009-12-23 18 views
6

सबसे पहले, मुझे यकीन नहीं है, यदि PHP विंडो के साथ ब्राउज़र विंडो स्क्रीन को कैप्चर करना संभव है, तो इसे कैसे करें?PHP: php के साथ ब्राउज़र विंडो स्क्रीन कैप्चर कैसे करें?

यदि यह संभव है, सबसे अच्छा ऐसे मेनूबार, उपकरण पट्टी, प्रस्थिति, आदि

धन्यवाद

+3

http://stackoverflow.com/questions/713938/how-can-i-generate-a-screenshot-of-a- वेबपृष्ठ-उपयोग-ए-सर्वर-साइड-स्क्रिप्ट – vsr

+0

मैं php के लिए विशिष्ट हूं लेकिन आपने कुछ अच्छा धन्यवाद साझा किया है :) – Sarfraz

उत्तर

9

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

PHP के मैनुअल में PHP के बारे में नहीं जानते हैं, तो उन लोगों के लिए एक sidenote पर, मैं PHP मैनुअल में get_browser() पर एक नज़र डालने का सुझाव दूंगा। यह ज्यादा नहीं है, लेकिन हे, यह कुछ भी नहीं है।

2

पीएचपी ब्राउज़र के बारे में कुछ नहीं जानता के रूप में सिर्फ वेबसाइट की सामग्री को छोड़कर ब्राउज़र भागों पर कब्जा करने के लिए किया जाएगा। वास्तव में, ब्राउज़र को डेटा प्राप्त करने से पहले आमतौर पर PHP समाप्त हो गया है।

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

+0

वैसे यह ब्राउज़र के उपयोगकर्ता एजेंट स्ट्रिंग को जानता है। लेकिन ग्राहक के वास्तविक कंप्यूटर के बारे में कुछ भी नहीं। –

1

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

यह कहा गया है कि आप शायद क्लाइंट-साइड टेक्नोलॉजीज जैसे ActiveX या Flash या Java को शामिल कर सकते हैं, जो स्क्रीन को कैप्चर करेगा और उसके बाद उसे AJAX अनुरोध में सर्वर पर पोस्ट करेगा, लेकिन आपको शायद नहीं करना चाहिए। मैं कल्पना नहीं कर सकता कि इस तरह की चीज़ के लिए आपके पास किस तरह का उपयोग होगा, अन्य तो शायद लेआउट मुद्दों को डीबग करना।

0

आप इसे PHP (सर्वर-साइड) से नहीं कर सकते हैं।

लेकिन आप छवि को कैप्चर करने के लिए कई HTML में से एक पीडीएफ कन्वर्टर्स का उपयोग कर सकते हैं (और पीडीएफ को किसी अन्य चीज़ में बदलने के लिए बहुत सारे टूल हैं)।

6

यह पूरी तरह से किया जा सकता है, यह ऐसा करने के लिए PHP से थोड़ा अधिक लेता है। मेरे पास PHP में लिखा गया एक एप्लिकेशन है जो कुछ अंतराल पर वेबसाइटों के स्नैपशॉट लेता है। यह एक सा जा रहा प्राप्त करने के लिए मुश्किल है, लेकिन यहां दिए गए चरणों मैं एक Linux मशीन पर ले लिया है:

  • स्मृति में एक एक्स विंडोज सत्र का अनुकरण करने Xvfb (या VNC सर्वर) को स्थापित करें। प्रदर्शन पर Xvfb शुरू: 1
  • स्थापित फ़ायरफ़ॉक्स
  • स्थापित ImageMagick
  • इच्छित URL पर Firefox चलाने के लिए एक bash स्क्रिप्ट बनाएं। मेरा यह दिखता है:

#!/bin/bash 
DISPLAY=:1 firefox & 
sleep 2s 
DISPLAY=:1 firefox -kill-all & 
sleep 1s 
DISPLAY=:1 firefox -url $1 & 
sleep 5s 
DISPLAY=:1 import -window root /var/www/images/screenshots/$2.png 
  • पीएचपी से स्क्रिप्ट निष्पादित करें:

exec ('sh ../scripts/screencap.sh ' . $url . ' ' . $file_name); 

स्क्रीनशॉट होने पर ब्राउज़र को पूर्ण स्क्रीन होने के लिए मेरे लिए सबसे कठिन हिस्सा था। चूंकि आप सीधे ब्राउज़र तक नहीं पहुंच सकते हैं, आपको फ़ायरफ़ॉक्स की कॉन्फ़िगरेशन फ़ाइलों के माध्यम से सब कुछ कॉन्फ़िगर करना होगा, जिसमें कुछ समय लग सकता है।

उपयोगी लिंक्स मदद करने के लिए आप आरंभ:

http://semicomplete.com/blog/geekery/xvfb-firefox.html http://www.webmasterworld.com/forum21/9182.htm

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