دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
کنترل printPreviewDialog در سی شارپ
1404/07/09 -
Storage در SQL Server
1404/07/09 -
کنترل printPreviewControl در سی شارپ
1404/07/08 -
Service Broker در SQL Server
1404/07/08 -
کنترل radioButton در سی شارپ
1404/07/07 -
System View در SQL Server
1404/07/07
کنترل printDocument در سی شارپ

کنترل PrintDocument در سیشارپ چیست؟
یکی از قابلیتهای مهمی که در نرمافزارهای دسکتاپی لازم میشود، امکان چاپ اسناد، متنها، گزارشها و تصاویر است. در زبان برنامهنویسی C# و محیط Windows Forms برای مدیریت فرآیند چاپ از چند کنترل کلیدی استفاده میشود.
یکی از مهمترین این کنترلها، PrintDocument است.
کنترل PrintDocument در واقع مسئول اصلی عملیات چاپ است. این کنترل مشخص میکند که چه چیزی باید روی کاغذ چاپ شود و چگونه نمایش داده شود.
در حالی که کنترلهایی مانند PrintDialog یا PrintPreviewDialog فقط رابط کاربری برای انتخاب تنظیمات و نمایش پیشنمایش هستند، وظیفه واقعی چاپ همیشه به عهده PrintDocument است.
مفهوم PrintDocument در سیشارپ
کنترل PrintDocument یک کامپوننت غیرگرافیکی در Windows Forms است.
این کنترل محتوای چاپی را تعریف میکند.
عملیات چاپ در آن از طریق رویدادها انجام میشود.
مهمترین رویداد آن PrintPage است که در آن مشخص میکنیم چه متن یا تصویری چاپ شود.
به بیان ساده، PrintDocument مانند یک نقاش است که روی کاغذ رسم میکند. شما باید در کد بگویید چه چیزی رسم (چاپ) شود: متن، تصویر، جدول یا هر عنصر گرافیکی.
کاربردهای PrintDocument در سی شارپ
این کنترل در پروژههای متنوعی کاربرد دارد:
- چاپ متن ساده از داخل یک کنترل مانند TextBox یا RichTextBox
- چاپ گزارشهای ساده و رسیدها
- چاپ محتوای گرافیکی (مانند نمودار یا تصویر)
- ترکیب با PrintDialog برای گرفتن تنظیمات از کاربر
- ترکیب با PrintPreviewDialog برای پیشنمایش چاپ قبل از ارسال به پرینتر
آیا به دنبال یک فرصت عالی برای یادگیری برنامهنویسی هستید؟ 🚀
با دوره آموزشی سیشارپ ما، شما میتوانید مهارتهای خود را به سطح جدیدی ارتقا دهید! این دوره بهطور کامل طراحی شده تا به شما کمک کند تا از مبتدی تا پیشرفته در دنیای برنامهنویسی سیشارپ پیش بروید.
👨🏫 چرا دوره ما را انتخاب کنید؟
- محتوای جامع و عملی: با پروژههای واقعی و تمرینات عملی، یادگیری را به تجربهای جذاب تبدیل کنید.
- مدرس مجرب: از تجربه و دانش مدرس حرفهای بهرهمند شوید که شما را در هر مرحله از یادگیری راهنمایی میکنند.
- پشتیبانی ۲۴/۷: هر زمان که سوالی داشتید، ما در کنار شما خواهیم بود تا به شما کمک کنیم.
- دسترسی مادامالعمر: به محتوای دوره دسترسی دائمی داشته باشید و هر زمان که خواستید، میتوانید به آن مراجعه کنید.
💡 فرصت را از دست ندهید!
بایادگیری سیشارپ، میتوانید در دنیای فناوری اطلاعات به یک متخصص تبدیل شوید و در پروژههای جذاب و چالشبرانگیز شرکت کنید.
همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آیندهای روشنتر بردارید!
شرکت در دوره آموزش برنامه نویسی سی شارپ
اضافه کردن PrintDocument به فرم در سی شارپ
برای استفاده از PrintDocument به روش طراحی:
- یک پروژه جدید Windows Forms App ایجاد کنید.
- از Toolbox بخش Printing، کنترل PrintDocument را انتخاب کنید.
- آن را روی فرم اضافه کنید.
این کنترل مانند دکمه یا TextBox روی فرم دیده نمیشود بلکه در بخش پایین (Component Tray) قرار میگیرد. - روی کنترل کلیک کرده و رویداد PrintPage را ایجاد کنید.
ایجاد PrintDocument با کدنویسی
همچنین میتوان بدون اضافه کردن از Toolbox، بهصورت دستی یک نمونه از PrintDocument ایجاد کرد.
مثال ساده:
using System;
using System.Drawing;
using System.Drawing.Printing;
using System.Windows.Forms;
namespace PrintDocumentExample
{
public class MainForm : Form
{
private Button btnPrint;
private PrintDocument printDocument;
public MainForm()
{
this.Text = "نمونه PrintDocument در سی شارپ";
this.Size = new Size(400, 200);
btnPrint = new Button();
btnPrint.Text = "چاپ";
btnPrint.Location = new Point(150, 70);
btnPrint.Click += BtnPrint_Click;
// نمونهسازی PrintDocument
printDocument = new PrintDocument();
printDocument.PrintPage += PrintDocument_PrintPage;
this.Controls.Add(btnPrint);
}
private void BtnPrint_Click(object sender, EventArgs e)
{
printDocument.Print();
}
private void PrintDocument_PrintPage(object sender, PrintPageEventArgs e)
{
e.Graphics.DrawString("سلام دنیا! این متن چاپ میشود.",
new Font("Tahoma", 14), Brushes.Black, 100, 100);
}
[STAThread]
public static void Main()
{
Application.EnableVisualStyles();
Application.Run(new MainForm());
}
}
}
ویژگیهای مهم PrintDocument در سی شارپ
-
DocumentName
نام سندی که چاپ میشود را مشخص میکند. این نام در صف چاپ پرینتر دیده میشود.
printDocument.DocumentName = "گزارش فروش";
-
PrinterSettings
این ویژگی تنظیمات مربوط به پرینتر را نگه میدارد (نام پرینتر، تعداد کپی، محدوده صفحات و...).
printDocument.PrinterSettings.Copies = 2; // چاپ ۲ نسخه
-
DefaultPageSettings
تنظیمات پیشفرض صفحه (اندازه کاغذ، جهت صفحه، حاشیهها و...) را مدیریت میکند.
printDocument.DefaultPageSettings.Landscape = true; // حالت افقی
رویدادهای مهم PrintDocument در سی شارپ
-
PrintPage
این رویداد اصلیترین بخش است. هر بار که یک صفحه چاپ میشود، این رویداد فراخوانی میشود.
در آن مشخص میکنیم چه چیزی روی صفحه رسم (چاپ) شود.
مثال:
private void PrintDocument_PrintPage(object sender, PrintPageEventArgs e)
{
e.Graphics.DrawString("متن نمونه چاپی", new Font("Arial", 12), Brushes.Black, 50, 50);
}
-
BeginPrint
قبل از شروع عملیات چاپ رخ میدهد. معمولا برای آمادهسازی دادهها استفاده میشود.
-
EndPrint
بعد از پایان عملیات چاپ رخ میدهد.
-
QueryPageSettings
قبل از چاپ هر صفحه رخ میدهد و میتوان تنظیمات هر صفحه را تغییر داد.
نمونه چاپ متن از TextBox
فرض کنید میخواهید محتوای TextBox را چاپ کنید:
private void BtnPrint_Click(object sender, EventArgs e)
{
printDocument.PrintPage += (s, ev) =>
{
ev.Graphics.DrawString(textBox1.Text,
new Font("Times New Roman", 12), Brushes.Black, 100, 100);
};
printDocument.Print();
}
چاپ تصویر با PrintDocument
میتوان یک تصویر را نیز چاپ کرد:
private void PrintDocument_PrintPage(object sender, PrintPageEventArgs e)
{
Image img = Image.FromFile("C:\\Users\\Public\\Pictures\\Sample.jpg");
e.Graphics.DrawImage(img, 50, 50, img.Width / 2, img.Height / 2);
}
ترکیب PrintDocument با PrintDialog
اغلب برای گرفتن تنظیمات چاپ از کاربر، PrintDocument همراه با PrintDialog استفاده میشود:
private void BtnPrint_Click(object sender, EventArgs e)
{
PrintDialog pd = new PrintDialog();
pd.Document = printDocument;
if (pd.ShowDialog() == DialogResult.OK)
{
printDocument.Print();
}
}
ترکیب PrintDocument با PrintPreviewDialog
برای نمایش پیشنمایش سند قبل از چاپ:
private void BtnPreview_Click(object sender, EventArgs e)
{
PrintPreviewDialog preview = new PrintPreviewDialog();
preview.Document = printDocument;
preview.ShowDialog();
}
نکات حرفهای در استفاده از PrintDocument
اگر سند طولانی دارید (بیش از یک صفحه)، باید در رویداد PrintPage مدیریت کنید.
با استفاده از ویژگی HasMorePages = true میتوان ادامه چاپ را به صفحات بعدی منتقل کرد.
مثال:
private void PrintDocument_PrintPage(object sender, PrintPageEventArgs e)
{
e.Graphics.DrawString("صفحه اول", new Font("Tahoma", 14), Brushes.Black, 100, 100);
e.HasMorePages = true; // ادامه به صفحه بعد
}
همیشه توجه کنید که چاپ یک فرآیند گرافیکی است. یعنی همه چیز روی Canvas پرینتر رسم میشود (مانند رسم روی فرم با GDI+).
برای جلوگیری از مشکل در متون فارسی، بهتر است از فونتهایی مانند Tahoma یا B Nazanin استفاده کنید.
مزایا و معایب PrintDocument در سی شارپ
-
مزایا:
- کنترل کامل روی محتوای چاپشده (متن، تصویر، اشکال)
- قابلیت چاپ چند صفحه
- امکان استفاده همراه با PrintDialog و PrintPreviewDialog
-
معایب:
- نیازمند کدنویسی برای طراحی ظاهر چاپ (برخلاف ابزارهای گزارشگیری آماده)
- کار با متنهای طولانی کمی پیچیدهتر میشود
جمعبندی
کنترل PrintDocument قلب عملیات چاپ در سیشارپ است.
اگر بخواهید محتوایی چاپ شود، باید از این کنترل استفاده کنید.
سایر کنترلها مانند PrintDialog یا PrintPreviewDialog تنها رابط کاربری هستند و بدون PrintDocument نمیتوانند کاری انجام دهند.
برای استفاده:
یک نمونه PrintDocument بسازید.
رویداد PrintPage آن را پیادهسازی کنید.
در این رویداد، متن یا تصویر مورد نظر خود را روی Graphics رسم کنید.
در نهایت، متد ()Print را صدا بزنید.
به این ترتیب شما قادر خواهید بود در برنامههای سیشارپ خود، متن، تصویر و حتی گزارشهای ساده را چاپ کنید.
سوالات متداول
❓ 1. کنترل PrintDocument در سیشارپ چه کاربردی دارد؟
✅ برای مدیریت فرآیند چاپ و طراحی محتوای خروجی روی کاغذ (متن، تصویر، جدول و...) استفاده میشود.
❓ 2. چطور میتوان محتوای چاپی را تعیین کرد؟
✅ با استفاده از رویداد PrintPage محتوای دلخواه (مانند متن یا تصویر) روی صفحه چاپ طراحی میشود.
❓ 3. آیا PrintDocument به تنهایی کافی است؟
✅ خیر، معمولاً همراه با PrintDialog یا PrintPreviewDialog استفاده میشود تا کاربر تنظیمات چاپ را انتخاب کند.
❓ 4. چگونه چاپ چند صفحهای مدیریت میشود؟
✅ در رویداد PrintPage با تنظیم e.HasMorePages = true میتوان چاپ را به صفحات بعدی ادامه داد.
دوره های مرتبط

آموزش برنامه نویسی سی شارپ
زبان شی گرایی حرفه ای سی شارپ یک زبان قدرتمند برای طراحی نرم افزار به شمار میرود.