قواعد المشاركة في المنتدى

(قسم الدعم الفني) الموضوع:0591765499‏بيع شراء حبوب ‏الاجهاض سايتوتك ‏جده ‏الرياض‏ بواسطة: (دكتتتور محممد) :: (قسم الاعلانات) الموضوع:شركة شراء اثاث مستعمل بالرياض 0500866134 افضل اسعار مكيفات شاشات _ ثلاجات بواسطة: (اابوالطيب) :: (قسم الاعلانات) الموضوع:افكار لتجديد الاثاث المنزلي بواسطة: (كوين) :: (منتدى الكتب الالكترونية) الموضوع:كتبٍ ACCESS VBA مدفوعة هنا بالمجان بواسطة: (abdelhaqF10) :: (منتدى مبرمجي لغة جافا JAVA) الموضوع:مكن مساعده في الجافا .. بواسطة: (Mayan1998) :: (كتب عن VB.NET) الموضوع:ثلاث كتب قيمة و شاملة لتعلم VB.NET بالمجان بواسطة: (abdelhaqF10) :: (قسم الاعلانات) الموضوع:ألعاب فريف على الإنترنت. بواسطة: (xukaka) :: (منتدى ADO.NET العام) الموضوع:احتراف أنظمة الشَّبكات سيسكو CCNA بواسطة: (احمدجج) :: (قسم التطوير والاقتراحات) الموضوع:دورة البرنامج المتكامل لاعداد و تأهيل مدير الموارد البشرية بواسطة: (Nermeen metc) :: (منتدى الأكسس) الموضوع:اريد طريقة الاستعلام بواسطة: (لتكون قادراً) :: (منتدى البرامج) الموضوع:دورات صيانه هاردوير كمبيوتر باحتراف بواسطة: (ريم على) :: (قسم الاعلانات) الموضوع:تعلمي حيل ذكية لتنظيف الثلاجة بواسطة: (amany elsayed) :: (منتدى Microsoft Visual Basic) الموضوع:برجاء مشكله فى الفيجوال بيسك 2008 بواسطة: (shela) :: (قسم الدعم الفني) الموضوع:مشكله فى الفيجوال بيسك 2008 بواسطة: (shela) :: (قسم الاعلانات) الموضوع:مكافحة الحشرات المنزلية بواسطة: (هاني القطب) :: (قسم الاعلانات) الموضوع:مسوق الكتروني لأهل المنطقه الغربيه بالسعوديه 00966542597828مسوق الكتروني محترف بجده،مسوق عقاري بجده،مسوق لشركات جده بواسطة: (عبدالرحمان) :: (قسم الاعلانات) الموضوع:افكار لمنزل معطر بواسطة: (كوين) :: (قسم الاعلانات) الموضوع:كوفيره تجي للمنزل بالرياض 0508222554 .كوفيره مكياج .كوفيره تجميل العرائس بالرياض،كوافيرة ممتازة بأسعار مناسبه بواسطة: (عبدالرحمان) :: (قسم الاعلانات) الموضوع:شركة تنظيف منازل بالخبر من ابراج دبي بواسطة: (ليان عمر) :: (قسم الاعلانات) الموضوع:تخلص من الصراصير دون مبيدات سامة بواسطة: (سجيات)


راديو القرآن

المواضيع المثبته: (القسم المفتوح) الموضوع:إلا رسول الله صلى الله عليه وسلم بواسطة: (alanees) :: (منتدى تحليل و تصميم نظم المعلومات) الموضوع:ما هو تحليل النظم System analysis بواسطة: (jbsa) :: (منتدى الكتب و المقالات) الموضوع:الجديد في Office Access 2007 بواسطة: (عبد الله الثبيتي) :: (Oracle قسم قواعد البيانات أوراكل) الموضوع:تفقيط الأرقام للغة العربية تحت بيئة oracle pl sql بواسطة: (adnan_som) :: (Oracle قسم قواعد البيانات أوراكل) الموضوع:كتب اوراكل (عربي) ...حمل... بواسطة: (عبد الرحمن) :: (Oracle قسم قواعد البيانات أوراكل) الموضوع:بعض ميزات أوركل 10g بواسطة: (وليد القدسي) :: (منتدى Microsoft Visual Basic) الموضوع:برنامج الحسابات مع الكود بواسطة: (د.أنس عباس) :: (منتدى Microsoft Visual Basic) الموضوع:يرجى الإنتباه لجميع الأعضاء الجدد بواسطة: (zoubicom) :: (Oracle قسم قواعد البيانات أوراكل) الموضوع:E-Business Suite بواسطة: (وليد القدسي) :: (منتدى تحليل و تصميم نظم المعلومات) الموضوع:مراحل تحليل النظم لدراسة نظام قائم بواسطة: (jbsa) :: (Oracle قسم قواعد البيانات أوراكل) الموضوع:ما هي أوراكل وماتعرف عنها بواسطة: (وليد القدسي) :: (منتدى مبرمجي ASP) الموضوع:برنامج اختبارات للجامعات بواسطة: (عبدالله جابر شقليه) :: (منتدى Microsoft Visual Basic) الموضوع:عرض الصور المخزنه في قاعدة البيانات بالكريستال ريبورت بواسطة: (ابو حمد) :: (منتدى تصميم صفحات الويب) الموضوع:أرشيف المواضيع المميزة بواسطة: (alanees) :: (منتدى مبرمجي ASP) الموضوع:شرح كود موقع شؤون الموظفين النسخة الأولى بواسطة: (alanees) :: (القسم المفتوح) الموضوع:الى الاخوه الاعضاء مع التحيه والتقدير بخصوص العناوين للمشاركة بواسطة: (startnet) :: (منتدى برمجة الألعاب) الموضوع:برنامج رائع لتصميم الألعاب بواسطة: (mjxp) :: (منتدى Microsoft Visual Basic) الموضوع:دورة التعامل مع قواعد بيانات Oracle بإستخدام ADO بواسطة: (Max Bayne) :: (منتدى أجاكس(Asynchronous JavaScript and XML)) الموضوع:تقسيم النتائج لعدة صفحات مع 3 لغات برمجة ويب بواسطة: (عبدالله جابر شقليه) :: (منتدى البرامج) الموضوع:شروحات لبرامجك المفضلة بواسطة: (junkbki)

عدد الصفحات : 2  1  2   > » إضافة رد إضافة موضوع جديد

> كيفية قرائة الصحف الإلكترونية والكتب والمجلات عبر الانترنت
Bookmark and Share
تقييم الموضوع Label معدل التقيم:5
مشاركةالجمعة,09/شعبان/1430 هـ,09:25 صباحاً
المشاركة #1

مدير منتديات المحيط العربي
الرتبة في المنتدى:عماد



المجموعة: الإدارة
المشاركات: 3905
سجل في:الخميس,09/شعبان/1425 هـ,08:02 صباحاً
الدولة:فلسطين
رقم العضوية: 1



بسم الله الرحمن الرحيم


السلام عليكم ورحمة الله وبركاته

كما عودناكم دائما لشرح لكم المواضيع المتميزة في منتديات المحيط العربي، ان شاءالله ابتداء من اليوم سوف اقوم بوضع لكم سلسلة من الدروس لكيفية قرائة الصحف الإلكترونية والكتب والمجلات ومعالجتها عبر الانترنت.

يمكن معظم شاهد بعض المواقع عبر الانترنت تتيج لكم القدرة لقرائة الصحف الإلكترونية والمجلات والكتب عبر الانترنت، حيث أن جميع هذه الأمور تكون مخزنة على هيئة ملفات PDF فمن خلاله نتمكن تصفحها عبر الانترنت من خلال قيام بعض الإجرائات البرمجية على الملف لجعل الزوار من مقدرتهم تصفح الصحف والكتب وغيره مع تمكينهم من عمل بعض الإجرائات مثل القرائة والتقطيع والحفظ والطباعة وغير من أمور يمكن عملها.

كيف يتم القرائة من ملف PDF سوف يتم القرائة من خلال استخراج صفحات ال PDF على شكل صور وسوف نستخدم لذلك المكتبة TallComponents.PDF.Rasterizer حيث هذه المكتبة تمكنا من استخراج صفحات ال PDF على شكل صور وكذلك تفيدنا في معرفة عدد صفحات ملف PDF.

ويمكنكم الحصول على هذه المكتبة على الرابط http://www.tallcomponents.com/

الدرس الأول سوف أعلمكم كيف يتم استخراج اي صفحة من صفحات ملف ال PDF على شكل صورة.


لاستخدام المكتبة المذكورة أعلاه يتم استدعائها من خلال عمل لها Imports ضمن الكلاسس أو الكود بهايند كالتالي:
Imports TallComponents.PDF.Rasterizer
Imports TallComponents.PDF.Rasterizer.Configuration


بعد أن تم تضمينها للمكتبة الأن يمكننا التعامل مع جميع الدوال التي بداخلها، لكيفية استرجاع صفحات ال PDF على شكل صور يتم كالتالي:
    Public Shared Function getpage(ByVal page_no As Integer, ByVal dpi As Double, ByVal src As String) As Bitmap
        Dim file As FileStream = New FileStream(HttpContext.Current.Server.MapPath(src), FileMode.Open, FileAccess.Read)
        Dim document As Document = New Document(file)
        Dim page As Page = document.Pages(CInt(page_no) - 1)
        Dim scale As Double = dpi / 72
        Dim bitmap As Bitmap
        bitmap = New Bitmap(CInt(scale * page.Width), CInt(scale * page.Height))

        Dim graphics As Graphics = Drawing.Graphics.FromImage(bitmap)
        graphics.SmoothingMode = SmoothingMode.AntiAlias
        graphics.ScaleTransform(CSng(scale), CSng(scale))
        graphics.InterpolationMode = InterpolationMode.HighQualityBilinear
        graphics.Clear(Color.White)

        page.Draw(graphics)

        Return bitmap
    End Function


حيث قمت بإنشاء دالة وقمت بتسميتها getpage وتحتوي على 3 متغيرات وهم page_no و dpi و src
المتغير page_no يتم من خلاله تحديد رقم الصفحة التي نود استخراجها كصورة.
المتغير dpi: سيتم تحديد دقة الصورة التي سوف نستخرجها من الملف.

 Dim file As FileStream = New FileStream(HttpContext.Current.Server.MapPath(src), FileMode.Open, FileAccess.Read)

هنا سوف يتم قرائة الملف من خلال المسار الذي تم تمريره للدالة getpage وسوف يتم تخزينه كا Fiesteam داخل المتغير File.
 Dim document As Document = New Document(file)

هنا سوف يتم تحويل الملف على شكل Document.
Dim page As Page = document.Pages(CInt(page_no) - 1)

هنا سوف نحدد اي صفحة نريد استخراجها من ال Document على شكل صورة.
Dim scale As Double = dpi / 72

هنا قمنا بتعريف متغير Scale وبه سوف نقوم بتخزين مقياس الرسم الذي سوف نأخده من الصفحة التي نود استخراجها.
 Dim bitmap As Bitmap
        bitmap = New Bitmap(CInt(scale * page.Width), CInt(scale * page.Height))


هنا قمنا بتعريف كتغير bitmap من نوع bitmap وهو كائن خاص للتعامل مع الصور ويتم التخزين بداخله الصور
كما تلاحظون بأنه تم تخزين الطول والعرض للصورة التي سوف نستخرجها داخل المتغير bitmap وهو ناتج عن ضرب طول وعرض صفحة ملف PDF المستخرجة مع مقياس الرسم للصورة.
 Dim graphics As Graphics = Drawing.Graphics.FromImage(bitmap)
        graphics.SmoothingMode = SmoothingMode.AntiAlias
        graphics.ScaleTransform(CSng(scale), CSng(scale))
        graphics.InterpolationMode = InterpolationMode.HighQualityBilinear
        graphics.Clear(Color.White)

        page.Draw(graphics)

        Return bitmap


هنا سوف يتم تحويل الصفحة على شكل صورة وتحديد دقة وضوح الصورة واستخراجها صورة وسوف تصبح الصورة بأبعادها الجديدة مخزنة داخل المتغير Bitmap وسوف تقوم الدالة getpage باسترجاع لنا قيمة Bitmap والتي سوف يتم التعامل معها من خلالها لعرض الصفحة على الموقع.

الان سوف نقوم بإنشاء صفحة وليكن اسمها على سبيل المثال readimage.aspx وهذه الصفحة سوف نتعامل معها لأجل استرجاع الصورة على الموقع وسوف تحتوي على الكود التالي:
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim Dpi As Integer = Request.Params("dpi")
        Dim filename As String = Request.Params("filename")
        Dim PageIndex As Integer = Request.Params("Pageindex")
        Dim Bitmap As Bitmap
        Bitmap = New Bitmap(Global.PDFSystem.getpage(PageIndex, Dpi, "pdf/" & filename))


        Bitmap.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)
        Bitmap.Dispose()
        Response.End()
    End Sub

كما تلاحظون بأنه تم تعريف المتغيرات التي سوف نستقبلها من صفحة أخرى لاسترجاع الصورة حيث تم إرسال رقم الصفحة التي سوف نستعلم عنها وكذلك مسار الملف مع دقة الصورة.
Bitmap = New Bitmap(Global.PDFSystem.getpage(PageIndex, Dpi, "pdf/" & filename))


كما تلاحظون هنا تم استدعاء الدالة التي قمنا بإنشاءها وتم تمرير المتغيرات بداخلها وتم تخزينها داخل متغير من نوع Bitmap
 Bitmap.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)

هنا سوف يتم قرائة الصورة المخزنة داخل bitmap وسوف يتم استخراجها على كصورة JPG على الصفحة.

الان لكيفية تضمين هذه الصورة المستخرجة ضمن صفحات الموقع وبعرضها ضمن تصميم الموقع بشكل معين ، لنقم بإنشاء صفحة خاصة بذلك وتحتوي على الأداة Image كالتالي:
  <asp:Image ID="Thembnail" runat="server" />

وسوف يكون الكود بهايند لهذه الصفحة كالتالي:
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Thembnail.ImageUrl = "readimg.aspx?filename=alkhaleej.pdf&pageindex=1&dpi=72"
    End Sub

حيث كما تلاحظن لقد تم وضع مسار الصورة رابط الصفحة reaimg.aspx التي تم إنشائها مسبقا وتم إرسال معها المتغيرات التي أسلفنا شرحها سابقا لاستخراج الصورة.
وهذا مثال استخراج للصورة من ملف PDF على الرابط التالي:http://www.arabmoheet.net/aspnetforum/uploads/1/image/img.jpg

كما تلاحظن بالصورة تم استخراجها بشكل كبيرة طبعا يتم ذلك من خلال تمرير قيمة المتغير DPI.

طبعا سوف تجدون جميع الأمثلة التي سوف اشرحها بالدروس التالية ضمن المرفق الأصلي لهذه المشاركة.

في الدرس التالي سوف يتم شرح لك كيفية يتم عرض جميع صفحات ملف PDF على شكل مصغرات.

مع التحية


الملفات المرفقة
 PDFSystem.rar ( 1517.98ك ) عدد مرات التنزيل: 1398


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالجمعة,09/شعبان/1430 هـ,09:44 صباحاً
المشاركة #2

مدير منتديات المحيط العربي
الرتبة في المنتدى:عماد



المجموعة: الإدارة
المشاركات: 3905
سجل في:الخميس,09/شعبان/1425 هـ,08:02 صباحاً
الدولة:فلسطين
رقم العضوية: 1



الدرس التالي سوف يتم شرح كيفية استخراج جميع ملفات PDF على شكل صور مصغرة كالشكل التالي:


سوف نقوم الأن بإنشاء صفحة وليكن اسمها Thumbnail.aspx وسوف يتم وضع الأداة DataList بداخلها Datalist كالتالي:
    <asp:DataList ID="ListThumbnail" Width="100%" RepeatColumns="4" RepeatDirection="Horizontal" runat="server">
        <ItemTemplate>
            <asp:Image ID="ImgThumbnail" runat="server" />
        </ItemTemplate>
        </asp:DataList>


حيث سوف يتم عرض لكل صف 4 صور من خلال الأتربيوت RepeatColumns.
الكود الخاص لهذه الصفحة لاستخراج صور مصغرة التالي:
 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim TotalPage As Integer = Global.PDFSystem.GetTotalPage("pdf/alkhaleej.pdf")
        Dim ArrPage(TotalPage - 1) As Integer
        ListThumbnail.DataSource = ArrPage
        ListThumbnail.DataBind()
    End Sub

    Protected Sub ListThumbnail_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles ListThumbnail.ItemDataBound
        If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then

            Dim ImgThumbnail As Image = CType(e.Item.FindControl("ImgThumbnail"), Image)
            ImgThumbnail.ImageUrl = "readimg.aspx?pageindex=" & e.Item.ItemIndex + 1 & "&filename=alkhaleej.pdf&dpi=10"

        End If
    End Sub


تم تعريف متغير TotalPage حيث سوف يتم تخزين بداخله عدد صفحات ملف ال PDF الذي سوف يتم تمريره للدالة GetTotalPage وكود هذه الدالة التالي:
Public Shared Function GetTotalPage(ByVal src As String) As Integer
        Dim file As FileStream = New FileStream(HttpContext.Current.Server.MapPath(src), FileMode.Open, FileAccess.Read)
        Dim document As Document = New Document(file)

        Return document.Pages.Count
    End Function

اعتقد بأن الكود واضح وبسيط ولا يحتاج للشرح

بعد أن تم الحصول على عدد صفحات ملف PDF يوم نقوم بتعريف ArrPage على شكل مصفوفة ويكون عددها صفوفها هو ناتج عن مجموع صفحات ال PDF المسترجعه ناقص قيمة 1.

بعد ذلك سوف يتم جعل قيمة ال Datasoruce لل Datalist التي قمنا بتعريفها تساوي المصفوفة ArrPage .

    Protected Sub ListThumbnail_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles ListThumbnail.ItemDataBound
        If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then

            Dim ImgThumbnail As Image = CType(e.Item.FindControl("ImgThumbnail"), Image)
            ImgThumbnail.ImageUrl = "readimg.aspx?pageindex=" & e.Item.ItemIndex + 1 & "&filename=alkhaleej.pdf&dpi=10"

        End If
    End Sub


سوف نستخدم الحدث الخاص بال Datalist وهو ItemDataBound والذي سوف نقوم من خلاله من البحث على الأداة ImgThumbnail وهي من نوع الصورة التي تم وضعها داخل ال Datalist لكي يتم اسناد لها مسار الصورة.
ومسار الصورة سوف يكون نفس المسار الذي قمنا بشرحه بالدرس فقط مع تغيير قيم المتغيرات المرسلة فقط لا غير.

بالدرس التالي سوف يتم شرح لكم بشكل متطور أكثر حيث سوف نقوم بعمل Crop للصورة المستخرجة اي سوف نقوم بتحديد أجزائ معينه من الصورة ومن ثم اخد الجزئ على شكل صورة كحده للجزئ الذي تم تحديده

مع التحية


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالجمعة,09/شعبان/1430 هـ,10:14 صباحاً
المشاركة #3

مدير منتديات المحيط العربي
الرتبة في المنتدى:عماد



المجموعة: الإدارة
المشاركات: 3905
سجل في:الخميس,09/شعبان/1425 هـ,08:02 صباحاً
الدولة:فلسطين
رقم العضوية: 1



الدرس التالي سوف يتم شرح لكم بشكل متطور أكثر حيث سوف نقوم بعمل Crop للصورة المستخرجة اي سوف نقوم بتحديد أجزاء معينه من الصورة ومن ثم اخد الجزئ المحدد على شكل صورة كحده.

لكيفية تحديد الصورة وتقطيعها سوف نستخدم بذلك الجافا سكربت حيث سوف من خلالها التحديد من خلال الماوس الجزئ الذي نود استخراجه من الصورة وهنا مكتبة جافا سكربت جاهزة لذلك وهي jquery وسوف تجدون الملفات الخاصة بها ملف والاستايل مع مثال هذه المشاركة ضمن الملف المرفق في المشاركة الأصلية للموضوع.

لكيفية تضمين الملفات الخاصة بالمكتبة jquery ضمن الصفحة الكتالي:
		 
 <script src="javascript/jquery.min.js"></script>
		<script src="javascript/jquery.Jcrop.js"></script>
    <link href="crop/StyleSheet.css" rel="stylesheet" type="text/css" />


سوف نقوم باستخدام نفس صفحة المثال الأول التي تم شرحا سابقاً لكيفية استخراج الصورة من ملف PDF وفقط سوف يتم إضافة له في مرحلة التصميم الأكواد التالية:
   <asp:HiddenField ID="cropX" runat="server" />
    <asp:HiddenField ID="cropY" runat="server" />
    <asp:HiddenField ID="cropWidth" runat="server" />
    <asp:HiddenField ID="cropHeight" runat="server" />


هنا تم وضع 4 أدوات لحقول مخفية وسوف يتم تخزين بداخلها أبعاد القصاصة التي نود أخدها من الصورة الأصلية والأبعاد تتمثل الطول والعرض و X و Y.

    <script>
jQuery(document).ready(function() {

    jQuery('#Thembnail').Jcrop({

      onselect: storeCoords

    });

  });


	

function storeCoords(c) {

    jQuery('#cropX').val(c.x);

    jQuery('#cropY').val(c.y);

    jQuery('#cropWidth').val(c.w);

    jQuery('#cropHeight').val(c.h);
  };
</script>  


Query("#Thembnail").Jcrop هنا سوف يتم تمرير للدالة Query اسم الأداة التي تحتوي على الصورة.
onselect: storeCoords هنا سوف يتم تضمين الدالة storeCoords والتي تحتوي على تعريف الحقول المخفية التي تم وضعها حيث اي حركة يتم عملها على الصورة لتحديد الجزئ الذي نود اخد قصاصة منه من خلال هذه الدالة.

بعد أن تم وضع كل الأمور الخاصة لعمل قصاصة للصورة سوف يتكون لنا الشكل التالي:


حيث كما تلاحظة تم التظليل على الصورة التي نود قصها من الصورة الأصلية وسوف اشرح لكم كيفية اخد القصاصة التي تم تحديدها من الصورة.
سوف نقوم بإضافة اي زر على الصفحة وأداة أخرى للصورة وليكن اسمها ImgCrop،حيث هذا الزر سوف يحتوي على الكود التالي:
  Dim X As Integer = Integer.Parse(cropX.Value)
        Dim Y As Integer = Integer.Parse(cropY.Value)
        Dim W As Integer = Integer.Parse(cropWidth.Value)
        Dim H As Integer = Integer.Parse(cropHeight.Value)
        ImgCrop.Visible = True
        ImgCrop.ImageUrl = "crop.aspx?filename=alkhaleej.pdf&pageindex=1&dpi=40&X=" & X & "&Y=" & Y & "&W=" & W & "&H=" & H


هنا قمنا بتعريف متغيرات لأخد أبعاد القصاصة التي تم تحديدها من الصورة الأصلية ، وتم وضع مسار الصورة تشير إلى صفحة اخرى وهي crop.aspx سوف يتم إرسال لها المتغيرات بأبعاد الصورة مع رقم الصفحة ومقاس الصورة واسم الملف .

كود الصفحة crop.aspx سوف يتضمن الكود التالي:
 Dim Dpi As Integer = Request.Params("dpi")
        Dim filename As String = Request.Params("filename")
        Dim PageIndex As Integer = Request.Params("Pageindex")
        Dim X As Integer = Request.Params("X")
        Dim Y As Integer = Request.Params("Y")
        Dim W As Integer = Request.Params("W")
        Dim H As Integer = Request.Params("H")
        Dim Bitmap As Bitmap
        Bitmap = New Bitmap(Global.PDFSystem.getpage(PageIndex, Dpi, "pdf/" & filename))
        Bitmap = Global.PDFSystem.CropImage(Bitmap, H, W, X, Y)

        Bitmap.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)
        Bitmap.Dispose()
        Response.End()


هنا تم استقبال جميع المتغيرات المرسلة لأبعاد الصورة مع الصفحة التي سوف نقوم باستخراج القصاصة منها.
  Bitmap = New Bitmap(Global.PDFSystem.getpage(PageIndex, Dpi, "pdf/" & filename))


هنا تم تخزين الصورة الأصلية وتم شرحها سابقا ضمن المثال الأول للمشاركة.

بعد أن تم تخزين الصورة الأصلية الان سوف نقوم بعملية Crop للصورة للأبعاد المحددة لدينا وذلك يتم من خلال الكود التالي:
Bitmap = Global.PDFSystem.CropImage(Bitmap, H, W, X, Y)


هنا تم استدعاء الدالة CropImage حيث تم تمرير لها كائن bitmap والذي يحتوي على الصورة الأصلية للصفحة مع أبعاد القصاصة التي سوف نقوم باستخراجها.
وكود الدالة CropImage هو التالي:
  Public Shared Function CropImage(ByVal CurrentImage As Bitmap, ByVal H As Integer, ByVal W As Integer, ByVal X As Integer, ByVal Y As Integer) As Bitmap
        Dim sourceRectangle As New RectangleF(X, Y, W, H)
        Dim targetBM As Bitmap
        Dim g As Graphics
        Dim targetRectangle As New RectangleF(0.0F, 0.0F, W, H)
        targetBM = New Bitmap(W, H, PixelFormat.Format32bppArgb)
        g = Drawing.Graphics.FromImage(targetBM)
        g.DrawImage(CurrentImage, targetRectangle, sourceRectangle, GraphicsUnit.Pixel)

        Return targetBM
        g.Dispose()
        targetBM.Dispose()
    End Function



ومن ناتج هذا المثال سوف نكون حصلنا على الشكل التالي:


طبعا مثال هذا الدرس تجدونه ضمن المرفق للمشاركة الأصلية.

وان شاءالله في الدرس القادم سوف يتم شرح لكم كيف يتم دمج الصور مع بعضها البعض
مع التحية


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالسبت,10/شعبان/1430 هـ,02:27 صباحاً
المشاركة #4

مدير منتديات المحيط العربي
الرتبة في المنتدى:عماد



المجموعة: الإدارة
المشاركات: 3905
سجل في:الخميس,09/شعبان/1425 هـ,08:02 صباحاً
الدولة:فلسطين
رقم العضوية: 1



الدرس التالي سوف أشرح لكم كيف يتم عمل دمج لصورتين مع بعضها البعض حيث تعلمون اي كتاب أو مجلة أو صحيفة دائما يكون الصفحة الرئيسية لوحدها والأخيرة لوحدها وما بينهم يتم عرض الصفحتين مع بعضهم البعض وهذا ما سوف أقوم بشرحه لكم لكيفية عمل ذلك وهي عملية بسيطة جدا وسهلة وتعتمد الكثير من الأمثلة التي تم وضعها بالسابق وسوف نستخدمها هنا ضمن أمثلتنا.

الكود التالي كود الصفحة التي سوف تعرض لنا على المتصفح الصورتين التي سوف نقوم بدمجهما مع بعضهم البعض:
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim Bitmap As Bitmap
        Bitmap = New Bitmap(Global.PDFSystem.MergeImage("pdf/alkhaleej.pdf", 20, 2))
        Bitmap.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)
        Bitmap.Dispose()
        Response.End()
    End Sub

في المثال الأعلى قمنا باستدعاء الدالة MergeImage وقمنا بتمرير لها المتغيرات مقياس الصورة ومسار ملف PDF وكذلك رقم الصفحة لكن لم نضع رقم الصفحة الأخرى حيث سوف تقوم الدالة MergeImage لوحدها بشكل تلقائي معرفة الصفحة التي يجب ان يتم دمجها معها، وهذا كود الدالة MergeImage التي قمنا باستدعائها :
    Public Shared Function MergeImage(ByVal FileSrc As String, ByVal dpi As Integer, ByVal PageIndex As Integer) As Bitmap

        Dim TotalPage As Integer = GetTotalPage(FileSrc)
        Dim Bitmap As Bitmap
        If PageIndex = 1 Or TotalPage = PageIndex Then
            Bitmap = getpage(PageIndex, dpi, FileSrc)
        ElseIf TotalPage Mod 2 = 0 Then
            Dim Bitmap1 As Bitmap
            Dim Bitmap2 As Bitmap
            Bitmap1 = getpage(PageIndex + 1, dpi, FileSrc)
            Bitmap2 = getpage(PageIndex, dpi, FileSrc)
            Bitmap = compositing(Bitmap1, Bitmap2)
        Else
            Dim Bitmap1 As Bitmap
            Dim Bitmap2 As Bitmap
            Bitmap1 = getpage(PageIndex, dpi, FileSrc)
            Bitmap2 = getpage(PageIndex - 1, dpi, FileSrc)
            Bitmap = compositing(Bitmap1, Bitmap2)
        End If
        Return Bitmap

    End Function

كما تلاحظن هنا بالكود التالي:
 Dim TotalPage As Integer = GetTotalPage(FileSrc)


قمنا بالحصول على عدد صفحات ملف PDF والذي تم تعريفها من الدروس السابقة لكيفية الحصول على عدد الصفحات لكل ملف على حده.
 If PageIndex = 1 Or TotalPage = PageIndex Then
            Bitmap = getpage(PageIndex, dpi, FileSrc)

هنا نقوم باستخدام جملة IF الشرطية لمعرفة رقم الصفحة التي نود عرضها هل هي تساوي رقم 1 او مجموع عدد صفحات الملف حيث أنه كما أسلفنا سابقا بأنه الصفحة الأولى والأخيرة لكل كتاب أو مجلة سوف تعرض بشكل مستقل بدون دمجها مع صفحة اخرى.
 ElseIf TotalPage Mod 2 = 0 Then
            Dim Bitmap1 As Bitmap
            Dim Bitmap2 As Bitmap
            Bitmap1 = getpage(PageIndex + 1, dpi, FileSrc)
            Bitmap2 = getpage(PageIndex, dpi, FileSrc)
            Bitmap = compositing(Bitmap1, Bitmap2)
        Else
            Dim Bitmap1 As Bitmap
            Dim Bitmap2 As Bitmap
            Bitmap1 = getpage(PageIndex, dpi, FileSrc)
            Bitmap2 = getpage(PageIndex - 1, dpi, FileSrc)
            Bitmap = compositing(Bitmap1, Bitmap2)
        End If

هنا تم عملية فحص رقم الصفحة التي نود عرضها وتم تقسيمها لمعرفة هل هي رقم زوجي ام فردي بحيث لو كانت رقم زوجي وهو رقم 2 اي صوف ست دمجها مع الصفحة رقم 3 ولو كانت الرقم 3 سوف يتم دمجها مع الصفحة السابقة لها وهي رقم 2.
 Dim Bitmap1 As Bitmap
            Dim Bitmap2 As Bitmap
            Bitmap1 = getpage(PageIndex + 1, dpi, FileSrc)
            Bitmap2 = getpage(PageIndex, dpi, FileSrc)
            Bitmap = compositing(Bitmap1, Bitmap2)

كما تلاحظت تم تعريف متغيرين bitmap1 و bitmap2 حيث سوف يتم تخزين بداخلها كل صفحة لحده للصفحة المشار لها وللصفحة التي سوف نقوم بدمجها مع بعض ، وكما تلاحظون تم استخدام الدالة getpage لاحضار الصورة من ملف PDF والتي قمنا بشرحها في الدرس الأول.

Bitmap = compositing(Bitmap1, Bitmap2)

هنا تلاحظن بأنه تم استدعاء الدالة compositing وتم تمرير لها القيمتين bitmap1 و bitmap2 والتي سوف بداخلها الصفحتين التي سوف نقوم بدمجهم مع بعضهم البعض، وكود الدالة compositing هو التالي:
  Public Shared Function compositing(ByVal bitmap1 As Bitmap, ByVal bitmap2 As Bitmap) As Bitmap

        Dim compositeImage As Bitmap = New Bitmap(bitmap1.Width + bitmap2.Width, bitmap1.Height)
        Dim compositeGraphics As Graphics = Drawing.Graphics.FromImage(compositeImage)

        compositeGraphics.CompositingMode = CompositingMode.SourceCopy

        compositeGraphics.DrawImageUnscaled(bitmap1, 0, 0)

        compositeGraphics.DrawImageUnscaled(bitmap2, bitmap1.Width, 0)
        Return compositeImage
    End Function


في الكود التالي
  Dim compositeImage As Bitmap = New Bitmap(bitmap1.Width + bitmap2.Width, bitmap1.Height)

تم تعريف متغير compositeImage من نوع bitmap وتم تحديد عرضه بمقايس عرض الصورتين المتخزنة بداخله bitmap1 و bitmap2 التي تم تمريرهم مسبقا للدالة compositing وتم تحديد الارتفاع لها فقط من قيمة واحده من القيم المرره ، كما تعلمون بأنه ارتفاع الصفحة لا تتغير مطلقا عند قرائة اي صحيفة او كتاب وإنما فقط العرض هو الذي يتغير فلذلك لم يتم حساب مجموع الارتفاع للصورتين مع بعضهما البعض.
 Dim compositeGraphics As Graphics = Drawing.Graphics.FromImage(compositeImage)

هنا تم تعريف متغير compositeGraphics من نوع Graphics حيث سوف يتم من خلاله عمل الدمج للصورتين.
 compositeGraphics.CompositingMode = CompositingMode.SourceCopy


هنا تم وضع CompositingMode القيمة SourceCopy بأن سوف نقوم بعملية نسخ.
compositeGraphics.DrawImageUnscaled(bitmap1, 0, 0)

هنا تم استخدام الأمر DrawImageUnscaled ليقوم برسم الصورة الأولى
compositeGraphics.DrawImageUnscaled(bitmap2, bitmap1.Width, 0)

هنا تم استدعاء نفس الأمر وتم طلب إدراج الصورة الثانيه مع تحديد قيمة العرض للصفحة التي سوف يتم إدراجه بها.

فسوف تحصلون على الشكل التالي:


وبهكذا نكون قد انتهينا من شرح دمج الصفحات مع بعضها العض وسوف تجدون اكواد هذا المثال ضمن المرفق للمشاركة الأولى .
مع التحية


حررت من قبل: عبدالله جابر شقليه في السبت,10/شعبان/1430 هـ,02:30 صباحاً


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالسبت,10/شعبان/1430 هـ,09:21 مساءً
المشاركة #5

مدير منتديات المحيط العربي
الرتبة في المنتدى:عماد



المجموعة: الإدارة
المشاركات: 3905
سجل في:الخميس,09/شعبان/1425 هـ,08:02 صباحاً
الدولة:فلسطين
رقم العضوية: 1



تنويه للجميع بأنه جميع الأكواد التي تم وضعها ليس لها علاقة بالمكتبة TallComponents.PDF.Rasterizer وإنما فقط عملية استخراج الصورة من PDF ومعرفة عدد صفحات ملف ال PDF ما غير ذلك ليس دخل بالمكتبة اي يمكنكم تطبيق تلك الأمور على صور مخزنة لكم مسبقاً وإن شاءالله بالدرس القادم سوف اشرح لكم كيفية عمل تخزين لصورة بمقاس معين ومن ثم كيفية تصغير وتكبير هذه الصورة حسب ما يتناسب لأعمالكم.
مع التحية


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالأحد,11/شعبان/1430 هـ,02:22 صباحاً
المشاركة #6

خبيرتحليل نظم و دوت نت
الرتبة في المنتدى:عماد

أيقونة المجموعة

المجموعة: مشرفي الموقع
المشاركات: 3849
سجل في:الأحد,17/محرم/1428 هـ,05:57 صباحاً
الدولة:الأردن
رقم العضوية: 19244





بارك الله فيك اخي عبدالله

شرح اكثر من ممتاز ، ويسرني انك عدت لاعطاء الدروس من جديد ، فجزاك الله خيرا في الدنيا والاخرة

تحياتي للجميع
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالسبت,07/شوال/1430 هـ,01:33 مساءً
المشاركة #7

الرتبة في المنتدى:رائد

أيقونة المجموعة

المجموعة: أعضاء فعالين
المشاركات: 439
سجل في:الأربعاء,21/شعبان/1430 هـ,07:08 صباحاً
الدولة:اليمن
رقم العضوية: 91573



شرح متعوب علية .........والله


--------------------
وقال تعالى(( وَلَن تَرْضَى عَنكَ الْيَهُودُ وَلاَ النَّصَارَى حَتَّى تَتَّبِعَ مِلَّتَهُمْ قُلْ إِنَّ هُدَى اللّهِ هُوَ الْهُدَى وَلَئِنِ اتَّبَعْتَ أَهْوَاءهُم بَعْدَ الَّذِي جَاءكَ مِنَ الْعِلْمِ مَا لَكَ مِنَ اللّهِ مِن وَلِيٍّ وَلاَ نَصِيرٍ ))......

للمزيد من المشاريع الجاهزة ودورات برمجة المواقع اضغط هنا
رابط الموقع
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالسبت,14/ربيع الأول/1431 هـ,01:07 صباحاً
المشاركة #8

مشرف منتدى البرامج
الرتبة في المنتدى:عميد

أيقونة المجموعة

المجموعة: مشرفي الأقسام
المشاركات: 1181
سجل في:الأربعاء,12/ذو الحجة/1426 هـ,06:31 مساءً
الدولة:لبنان
رقم العضوية: 7602



السلام عليكم
بارك الله بك اخي عبدالله جابر شقليه
ما شاء الله شرح وافي ومتقن
فجزاك الله كل خيرا في الدنيا والاخرة وجعل ما تعمل في ميزان حسناتك


--------------------

للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالاثنين,13/جمادى الأولى/1431 هـ,02:57 مساءً
المشاركة #9

الرتبة في المنتدى:رائد

أيقونة المجموعة

المجموعة: أعضاء فعالين
المشاركات: 437
سجل في:الثلاثاء,18/جمادى الأولى/1430 هـ,03:15 مساءً
الدولة:العراق
رقم العضوية: 85998



شكراً جزيلا على هذا الموضوع


--------------------
اخوكم هيثم
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالسبت,27/رجب/1433 هـ,02:03 مساءً
المشاركة #10

الرتبة في المنتدى:رقيب

أيقونة المجموعة

المجموعة: الأعضاء
المشاركات: 30
سجل في:السبت,27/رجب/1433 هـ,01:47 مساءً
الدولة:السعودية
رقم العضوية: 100698



شكراً بارك الله فيك يا أخي


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة

    

عدد المتصفحين لهذا المنتدى «1»: (الضيوف «1» - المتخفون «0»)
الأعضاء «0»: .

عدد الصفحات : 2  1  2   > » إضافة رد جديد إضافة موضوع جديد



 
الوقت الأن:اليوم,08:22 صباحاً بتوقيت القدس المحتلة

Powered By arabmoheet v3.1

منتديات المحيط العربي  -  راسلنا  -   أعلى
X   رسالة المنتدى
(سوف يتم اغلاق هذه النافذة بعد 2 ثانية)
X   رسالة المنتدى
(سوف يتم اغلاق هذه النافذة بعد 2 ثانية)