الســــلام عليكم
نستعرض فى هذا المقال اهم مكونات الطباعة فى .NET وخواصها اتمنى ان تجدو فيها الفائدة.
**********
المكون الاساسى للطباعة فى .NET هو PrintDocumet فاللقيام باى عملية طباعة لابد اولا من اضافة هذا المكون الى المشروع وهو غير مرئى فى وقت التنفيذ ويظهر فى صينية المكونات فى وقت التصميم، للبدء قى عملية الطباعة يتم استدعاء الطريقة Print للكائن PrintDocumet وهذه الطريقة لا تفعل شئ غير انها تفجر الحدث PrintPage وهذا هو المكان الذى يوضع قيه الكود المسئول عن توليد المخرجات للطباعة يتم انشاء المخرجات بواسطة طرق الرسم للكائن Griphic وتبدأ عملية الطباعة بعد انهاء الحدث PrintPage
لفهم ما سبق انشئ مشروع جديد واضف Button وضع نسخة من المكون PrintDocumet على الفورم فى حدث النقر للزر اكتب الكود التالى والذى يقوم بتفجير حدث طباعة الصفحة :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click PrintDocument1.Print() End Sub
وبالنقر المزدوج على المكون PrintDocumet تصل للحدث PrintPage الممرر الثانى للحدث e يعرض كل الخواص التى تحتاجها فى عملية الطباعة الخاصية Graphics تستخدم لتوليد المخرجات الى سترسل للطباعة الخاصية MarginBounds تحتوى على معلومات حول منطقة الطباعة للصفحة (الهوامش المحددة من قبل المستخدم والتى يجب اخذها بعين الاعتبار عند الطباعة) ، الخاصية PageSettings تحتوى على معلومات حول الصفحة التى ستطبعها(حجم الصفحة، اتجاه الصفحة، الهوامش وما الى ذلك...) ومن ضمن خواص الكائن PageSettings الخاصية PrinterSettings وهو كائن اخر يحتوى على معلومات حول الطابعة والاعدادات الخاصة بها
اكتب الكود التالى فى الحدث PrintPage وهذا الكود يقوم بطباعة مستطيل يغلق منطقة الطباعه للصفحة(الهوامش) ويقوم بطباعة نص فى داخله كما يقوم بطباعة نص خارج منطقة الطباعة القيمة الافتراضية للهوامش هى 1 انش لكل جانب
Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim G As Graphics = e.Graphics
Dim X, Y, W, H As Integer
X = e.MarginBounds.X
Y = e.MarginBounds.Y
W = e.MarginBounds.Width
H = e.MarginBounds.Height
G.DrawRectangle(Pens.Blue, New Rectangle(X, Y, W, H))
Dim prnFont As New Font("Comic Sans MS", 36, FontStyle.Regular)
G.DrawString("Printing with VB.NET", prnFont, _
Brushes.Green, 150, 300)
G.DrawString("Sample Printout", _
New Font("Verdana", 16, FontStyle.Regular), _
Brushes.Gray, -10, -10)
End Subالكائن PageSettings
وهو يحتوى على الخواص التالية :
Bounds: ونعود بكائن مستطيل Rectangle يمثل حجم الصفحة وهذه الخاصية مكافئة للخاصية MarginBounds للممرر e فى الحدث printpage ، الا ان الخاصية Bounds لا تاخذ بعين الاعتبار الهوامش المحددة من قبل المستخدم فى مريع حوار اعدادات الصفحة، فصفحة بحجم letter ابعاد المستطيل تكون 850×1100 وصفحة بحجم A4 تكون الابعاد 827×1169.
Color : تعود بقيمة منطقية True/False اسند اليها القيمة True اذا كانت الطابعة ملونة
If printDoc.PrinterSettings.SupportsColor Then e.PageSettings.Color = True End If
: تعود بقيمة منطقية وهى تحدد اتحاه الطباعة هل هو افقيا landscape او عموديا portrait ،
استخدم هذه الخاصية لمعرفة الاتجاه الذى يحدده المستخدم فى مربع حوار اعدادات الصفحة، وتغيير قيمة هذه الخاصية لن يؤثر فى عملية الطباعة مباشرة اذ لابد من كتابة الكود اللازم لتغيير اتجاه الطباعة(تبديل عرض وارتفاع الصفحة)
Margins : تعود بكائن يمثل الهوامش المحددة من قبل المستخدم كخواص (Top, Left, Right, Bottom).
PaperSize: وتعود هذه الخاصية بكائن يمثل حجم الورق ، وابعاد الورقة هى تماما مثل الابعاد التى نحصل عليها من الخاصية Bounds ولكن توجد خاصيتان مهمتان لهذا الكائن هما Kind و PaperNameالخاصية Kind تاخذ احدى قيم المرقم PaperKind (Letter, B5 Envelope, etc.) بينما الخاصية PaperName
تستخدم مع الحجوم المخصصة من قبل المستخدم
PaperSource : تعود بكائن يمثل نوع ملقم الورق او صينية الورق على الطابعة المختارة فمثلا للطابعات ذات صينية الورق المفردة قيمة الخاصية PaperSourceName للكائن PaperSource تكون ''Auto Sheet Feeder."
PrinterResolution : تعود بكائن يمثل دقة الطباعة الخواص X,Y لهذا الكائن تعود بالقيم الافقية والعمودية على التوالى كنقاط لكل انش DPI والخاصية Kind تتضمن عدة خواص (Low, Medium, High, Custom, Draft )
PrinterSettings : تعود بكائن يمثل خواص الطابعة استخدم هذه الخاصية لمعرقة الخواص التى يحددها المستخدم فى مربع حوار اعددات الطابعة.
الكائن PrinterSettings
من اهم خواص هذا الكائن:
InstalledPrinters: وهى تسترجع اسماء كل الطابعات المثبته على الكمبيوتر بلاضافة الى اسماء الطابعات الموجودة ضمن الشبكة وله الحق فى الوصول اليها
Copies : فى هذه الخاصية يتم تحديد عدد النسخ المراد طباعتها استخدم الخاصية MaximumCopies لمعرفة اقصى عدد من النسخ تسمح به الطابعة فى المرة الواحدة
SupportsColor : تعود بقيمة منطقية تحدد اذا ما كانت الطابعة تدعم الطباعة بالالوان ام لا
IsValid: ذات قيمة منطقية وتحدد اذاما كان اسم الطابعة صحيح وان الطابعة متوفرة
The Printing Dialog Boxes
توجد ثلاث كائنات تظهر كمربعات حوار فى وقت التنفيذ تستتخدم بجانب الكائن Print Document للتحكم فى عملية الطباعة والاستجابة لخيارات المستخدم
PageSetupDialog وهو يسمح للمستخدم بتحديد اعدادات الصفحة (اتجاه الطباعة،الهوامش،الورق.....) صندوق الحوار هذا يعود بكائن PageSetting يمثل الاعدادات المحددة من قبل المستخدم والتى يجب اخذها بعين الاعتبار وجعل التطبيق يقوم بالطباعة على حسب ما يحده المستخدم
With PageSetupDialog1 .PageSettings = PrintDocument1.DefaultPageSettings If .ShowDialog =DialogResult.OK Then _ PrintDocument1.DefaultPageSettings = .PageSettings End With
PrintDialog مربع حوار معروف لكل مستخدمى ويندوز وهو يسمح للمستخدم باختيار الطابعة وتحديد خواصها اذا قمت بتجاهل هذا المربع الحوار سترسل المخرجات الى الطابعة الافتراضية بشكل تلقائى وسيتم استخدام باقى الاعدادات الافتراضية
PrintDialog1.PrinterSettings = _ PrintDocument1.DefaultPageSettings.PrinterSettings PrintDialog1.AllowSelection = True PrintDialog1.AllowSomePages = True If PrintDialog1.ShowDialog = DialogResult.OK Then PageSetupDialog1.PageSettings = PrintDocument1.DefaultPageSettings If PageSetupDialog1.ShowDialog = DialogResult.OK Then PrintDocument1.DefaultPageSettings = _ PageSetupDialog1.PageSettings PrintDocument1.Print End If End If
PrintPreview لعرض معاينة للمخرجات قبل طباعتها ويفضل توفيره للمستخدم دائما فهو يوفر كميات من الحبر حيث يقوم بمعاينة المخرجات ورؤيتها فاذا كانت ملائمة بقوم بطباعتها وعند استخدام هذا الكائن لاداعى لاستدعاء الطريقة Print للكائن PrintDocument فقط قم باسناد الكائن PrintDocument للخاصيةDocument للكائن PrintPreview وباستدعاء الطريقة ShowDialog يتم تفجير الحدث PagePrint وعرض المخرجات فى مربع حوارى
يوجد مثال مرفق ويعمل على اصدار 2005
بالتوفيق


