بســم الله الـرحمــن الرحيــم
قابلتني وأنا في أمور عملي فكرة جميلة لحل مشكلة وعقبة
فطرأت هذه الفكرة .. وهي أن أحول نصوص HTML إلى صور أثناء runtime أي صور في الميموري فقط OnTheFly ...
الفكرة قد تبدو سخيفة أو متواضعة ... وقد تشعر أيضاً أنها بسيطة جداً
ويمكنكم مراجعة طلبي للمساعدة في هذه النقطة من هنا
ولكن صدقوني مع بساطة الفكرة فقد أتعبتني كثيراً لأعثر لها على حل ...
وظللت لساعات طوال جداً أحاول وأجرب وأبحث إلى أن استطعت ان اعثر على الحل ... والذي أظنه بجميع الأحوال انفراد لمنتدانا العزيز وفكرة قد تساعد الكثيرين لمزيد من الأفكار والمشاريع هنا بالقسم
الحل:
تتلخص فكرة الحل في عمل متصفح في الميموري وتحميل صفحتك المطلوبة فيه .. ومن ثم تصوير الصفحة ... ومن ثم التخلص من المتصفح
بسيطة ... أليس كذلك؟!
بالطبع فهي ليست بسيطة مطلقاً خصوصاً أن عمل ذلك يتطلب العمل على Windows Application ونحن هنا ASP.NET ... ولا يخفى عليكم طبعاً الاختلاف الكبير بينهما ولا سيما التعارض وكذا Thread Savity وغيرها من النقاط التي يجب الحذر عند التعامل معها هنا في ASP.NET للحفاظ على أداء السيرفر والموقع وخلافه ...
وحتى لا أطيل الكلام إليكم المكونات:
أولاً: المكتبة
قمت بعمل مشروع Windows Application مع جعل Output Type: Class Library حتى أستطيع أن أدرجها في ASP.NET
وبداخل المشروع قمت بعمل Class واسميتها CustomBrowser .. وهي التي تتولى تكوين المتصفح الافتراضي والتحميل داخله وغيره .. وكذا ضبط Threads حتى لا يتم استهلاك مصار النظام أو السيرفر وكذا أخذ الصور في الأوقات المناسبة .. طبعاً لأننا هنا سنعمل على متصفح وهمي وبالطبع لا ندري متى تم الانتهاء من تحميل الصفحة لأخذ صورة ومتى يجب أن ننتظر قليلاً ...
وهي تأخد متغيرين ... الأول مسار الصفحة URL لو أردت أن يصور موقع لك .. والثاني محتوى الصفحة حالة لو كان عندك محتوى HTML كـ String ...
ثانياً: الموقع
طبعاً تم عمل Reference للمكون السابق هنا في الموقع
الموقع بسيط جداً .. صفحة بها أداة عرض صور ومربوطة على HTTP-Handler ليقوم بجلب الصورة لها أثناء تحميل الصفحة ... طبعاً هنا التحميل لن يكتمل إلا بعد اكتمال أخذ الصورة من المتصفح الوهمي أولاً ... وهذا سبب وجود عدد من Threads في المكون الأول
المشروع ككل مرفق مع المشاركة ... وتم الاستعانة في عمله ببعض المصادر الأجنبية ...
وبجب في المكون الأول ملاحظة السطر webserver.Navigate الذي ممرت له الصفحة about:blank حتى يظل المتصفح فارغ حتى أعطيه المحتوى الذي أريد على شكل HTML String ...
طبعاً يمكن تغيير هذا الـ Parameter لإظهار صفحة موقع كصورة بموقعك مثل مثلاً http://www.google.com .. طبعاً مع إيقاف السطر
webBrowser.Document.Body.InnerHtml
وهنا سيعرض الموقع الآخر كصورة داخل موقعك ... ومن ثم تكون قد عملت شيء أشبه بالـ IFrames مدعم من كل المتصفحات عكس IFrames
طبعاً يمكن عمل المزيد من التعديلات والأفكار الجديدة ... والتي أتمنى طرحها هنا ...
وفي النهاية أسأل الله أن يجعلي عملي هذا خالصاً لوجهه الكريم وأن يتقبله مني وأن ينفع به المسلمين
العمل مهدً إلى كل الإخوة هنا وبخاصة أخوي الكريمين AhmedElbaz وTareqVB
وسلام الله عليكم أجمعين


