منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
تعديل حجم ورق الطابعة برمجيا - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : تعديل حجم ورق الطابعة برمجيا (/showthread.php?tid=50815)



تعديل حجم ورق الطابعة برمجيا - kmar12 - 20-12-24

السلام عليكم

كيف أستطيع تغيير حجم ورق الطابعة برمجيا مع العلم أنني استخدم ريبورت فيور و الحجم المراد تطبيقه على الطابعة هو A7
أي 74/105

شكرا مسبقا


RE: تعديل حجم ورق الطابعة برمجيا - aljzazy - 21-12-24

في Visual Basic.NET عند استخدام Report Viewer للطباعة، يمكنك تعيين حجم الورق للطابعة برمجيًا باستخدام مكتبة
كود :
System.Drawing.Printing
. يتم ذلك عبر إعداد حجم الورق المخصص إلى الطابعة قبل الطباعة. إذا كان الحجم المطلوب هو A7 (74x105 mm)، يمكن تخصيص الحجم كما يلي:

الحل الكامل لتغيير حجم الورق إلى A7:
  1. استيراد المكتبات اللازمة: تأكد من تضمين المكتبات التالية:
    vb
    نسخ الكود
    Imports System.Drawing.Printing
  2. إعداد حجم الورق المخصص: يمكنك إنشاء حجم ورق مخصص باستخدام الكائن
    PaperSize
  3. .
  4. ربط إعدادات الطابعة بـ ReportViewer: تأكد من تطبيق إعدادات الطابعة على كائن ReportViewer الخاص بك.

الكود الكامل:
vb
نسخ الكود
كود :
Imports System.Drawing.Printing

Private Sub PrintReportWithCustomPaperSize()
   Try
       ' إنشاء الطابعة الافتراضية
       Dim printDoc As New PrintDocument()
       Dim printerName As String = printDoc.PrinterSettings.PrinterName

       ' إنشاء حجم الورق المخصص A7 (بالنقاط)
       Dim customPaperSize As New PaperSize("A7", ConvertToPoints(74), ConvertToPoints(105)) ' الحجم بوحدة الميليمتر
       
       ' إعداد الطابعة الافتراضية
       printDoc.DefaultPageSettings.PaperSize = customPaperSize
       printDoc.PrinterSettings.DefaultPageSettings.PaperSize = customPaperSize

       ' تعيين الطابعة إلى ReportViewer
       ReportViewer1.LocalReport.PrintToPrinter(printDoc.PrinterSettings, printDoc.DefaultPageSettings)

       MessageBox.Show("تمت الطباعة بنجاح!")
   Catch ex As Exception
       MessageBox.Show($"حدث خطأ: {ex.Message}")
   End Try
End Sub

' دالة لتحويل المليمترات إلى النقاط (1 إنش = 25.4 ملم = 100 نقطة)
Private Function ConvertToPoints(mm As Double) As Integer
   Return CInt((mm / 25.4) * 100)
End Function

شرح الكود:
  1. إنشاء حجم ورق مخصص:
    • يتم تعريف حجم الورق المخصص باستخدام كائن
      PaperSize
    • .
    • يتم تحويل الأبعاد من mm إلى النقاط (points) حيث تستخدم الطابعات النقاط كوحدة قياس.
  2. تطبيق حجم الورق:
    • يتم تعيين حجم الورق على
      DefaultPageSettings.PaperSize
    • الخاصة بالطابعة.
  3. الطباعة من خلال ReportViewer:
    • يتم تعيين إعدادات الطابعة إلى ReportViewer الخاص بك باستخدام طريقة
      PrintToPrinter
    • .

نصائح إضافية:
  • تأكد من أن الطابعة المثبتة تدعم الحجم المخصص (A7) أو أبعاد الورق المخصصة.
  • إذا كنت تريد اختيار طابعة معينة، يمكنك تحديد الطابعة باستخدام:
    vb
    نسخ الكود
    printDoc.PrinterSettings.PrinterName = "اسم الطابعة"
  • تأكد من إعداد الورقة في إعدادات الطابعة يدويًا في حالة وجود مشكلة في التحديد البرمجي.

اختبار الكود:
  • قم بتشغيل المشروع، واستدعاء الدالة
    PrintReportWithCustomPaperSize
  • للطباعة.
  • تأكد من تحميل التقرير في ReportViewer بشكل صحيح قبل الطباعة.