WPF (Windows Presentation Foundation) এ Print Preview তৈরি এবং কাস্টমাইজ করা একটি গুরুত্বপূর্ণ টপিক, বিশেষ করে যখন আপনি ব্যবহারকারীদের জন্য প্রিন্ট ফিচার তৈরি করতে চান। WPF এ প্রিন্টিং কাজ করার জন্য PrintDialog, PrintPreviewDialog এবং PrintVisual ইত্যাদি কন্ট্রোল ব্যবহার করা হয়। তবে, WPF তে একটি Print Preview কন্ট্রোল সরাসরি দেওয়া হয়নি, কিন্তু আপনি এটি কাস্টমাইজড প্রিন্টিং সিস্টেম ব্যবহার করে তৈরি করতে পারেন।
Print Preview কি?
Print Preview হল একটি ফিচার যা ব্যবহারকারীদের প্রিন্ট করার আগে তাদের ডকুমেন্টের একটি প্রিভিউ দেখানোর সুবিধা দেয়। এটি ব্যবহারকারীদের পৃষ্ঠার বিন্যাস, কনটেন্ট এবং মার্জিন দেখতে এবং প্রয়োজন অনুযায়ী সংশোধন করার সুযোগ দেয়।
WPF তে Print Preview তৈরি করতে PrintDialog, PrintVisual এবং FixedDocument ব্যবহার করা হয়।
Print Preview তৈরি করা
WPF তে Print Preview তৈরি করার জন্য আমরা সাধারণত PrintDialog ব্যবহার করি। এতে ডকুমেন্ট বা UI উপাদানটি প্রিন্ট করার আগে একটি প্রিভিউ দেখানো যায়।
Step 1: PrintDialog ব্যবহার করা
প্রথমে, WPF অ্যাপ্লিকেশনে প্রিন্ট ডায়ালগ খুলতে PrintDialog ব্যবহার করা হয়। এটি ব্যবহারকারীদের প্রিন্ট অপশন এবং প্রিন্ট প্যারামিটার নির্বাচন করতে সহায়তা করে।
private void ShowPrintPreview()
{
// Create a PrintDialog
PrintDialog printDialog = new PrintDialog();
// Open the PrintDialog window
if (printDialog.ShowDialog() == true)
{
// Create a Visual to be printed
FixedDocument fixedDocument = new FixedDocument();
// Create a FixedPage for the content
FixedPage fixedPage = new FixedPage();
// Add the content (for example, a simple text block)
TextBlock textBlock = new TextBlock
{
Text = "Hello, this is a print preview example!",
FontSize = 30
};
fixedPage.Children.Add(textBlock);
// Set the page size
fixedPage.Width = printDialog.PrintableAreaWidth;
fixedPage.Height = printDialog.PrintableAreaHeight;
// Create a page and add to the FixedDocument
PageContent pageContent = new PageContent();
((IAddChild)pageContent).AddChild(fixedPage);
fixedDocument.Pages.Add(pageContent);
// Show the print preview dialog
printDialog.PrintDocument(fixedDocument.DocumentPaginator, "Print Preview");
}
}
ব্যাখ্যা:
- PrintDialog কন্ট্রোল ব্যবহার করে প্রিন্ট ডায়ালগ খুলে।
- FixedDocument এবং FixedPage তৈরি করা হয়েছে যেখানে আপনার কনটেন্ট (যেমন, টেক্সট, ছবি) থাকবে।
- PrintDialog.PrintDocument মেথডের মাধ্যমে ডকুমেন্টের প্রিন্ট প্রিভিউ দেখানো হয়।
Print Preview কাস্টমাইজ করা
Print Preview কাস্টমাইজ করার জন্য আপনি FixedDocument এবং FixedPage ব্যবহার করতে পারেন, যা WPF তে প্রিন্টিংয়ের জন্য গঠনমূলক ডকুমেন্ট তৈরির কাজে ব্যবহৃত হয়।
Example: Customizing Print Preview (With Multiple Pages)
private void ShowCustomPrintPreview()
{
// Create a PrintDialog
PrintDialog printDialog = new PrintDialog();
// Open PrintDialog for user to select printer
if (printDialog.ShowDialog() == true)
{
// Create FixedDocument
FixedDocument fixedDocument = new FixedDocument();
// Create multiple pages for the print preview
for (int pageNumber = 0; pageNumber < 3; pageNumber++)
{
FixedPage fixedPage = new FixedPage();
// Add dynamic content to each page
TextBlock textBlock = new TextBlock
{
Text = $"This is page {pageNumber + 1}",
FontSize = 20
};
fixedPage.Children.Add(textBlock);
// Set page size
fixedPage.Width = printDialog.PrintableAreaWidth;
fixedPage.Height = printDialog.PrintableAreaHeight;
// Add fixedPage to FixedDocument
PageContent pageContent = new PageContent();
((IAddChild)pageContent).AddChild(fixedPage);
fixedDocument.Pages.Add(pageContent);
}
// Show print preview
printDialog.PrintDocument(fixedDocument.DocumentPaginator, "Custom Print Preview");
}
}
ব্যাখ্যা:
- এখানে ৩টি পৃষ্ঠা তৈরি করা হয়েছে, এবং প্রতিটি পৃষ্ঠায় একটি TextBlock যোগ করা হয়েছে।
- TextBlock এর মধ্যে ডাইনামিক কনটেন্ট (যেমন পৃষ্ঠা নম্বর) যোগ করা হয়েছে।
- এই কাস্টম প্রিন্ট প্রিভিউতে Multiple Pages প্রদর্শন করা হচ্ছে।
Print Preview কাস্টম স্টাইলিং এবং লেআউট
WPF তে Print Preview এর লেআউট কাস্টমাইজ করতে FixedPage এর মধ্যে বিভিন্ন ধরনের কন্ট্রোল যেমন TextBlock, Image, Canvas, Grid ইত্যাদি যোগ করা যায়। আপনি সেগুলির জন্য স্টাইলও নির্ধারণ করতে পারেন।
Example: Adding Multiple Controls and Styling
private void ShowStyledPrintPreview()
{
PrintDialog printDialog = new PrintDialog();
if (printDialog.ShowDialog() == true)
{
FixedDocument fixedDocument = new FixedDocument();
FixedPage fixedPage = new FixedPage();
fixedPage.Width = printDialog.PrintableAreaWidth;
fixedPage.Height = printDialog.PrintableAreaHeight;
// Add some styled content
TextBlock headerText = new TextBlock
{
Text = "Report Header",
FontSize = 24,
FontWeight = FontWeights.Bold,
HorizontalAlignment = HorizontalAlignment.Center,
Margin = new Thickness(0, 10, 0, 0)
};
fixedPage.Children.Add(headerText);
// Add an image to the page
Image image = new Image
{
Source = new BitmapImage(new Uri("Images/sample_image.jpg", UriKind.Relative)),
Width = 200,
Height = 150,
HorizontalAlignment = HorizontalAlignment.Center,
Margin = new Thickness(0, 50, 0, 0)
};
fixedPage.Children.Add(image);
// Add page content to the FixedDocument
PageContent pageContent = new PageContent();
((IAddChild)pageContent).AddChild(fixedPage);
fixedDocument.Pages.Add(pageContent);
printDialog.PrintDocument(fixedDocument.DocumentPaginator, "Styled Print Preview");
}
}
ব্যাখ্যা:
- এখানে TextBlock এবং Image কন্ট্রোলের মাধ্যমে একটি স্টাইলড প্রিন্ট পৃষ্ঠা তৈরি করা হয়েছে।
- FontSize, FontWeight, Margin ইত্যাদি প্রপার্টি ব্যবহার করে কাস্টম স্টাইলিং করা হয়েছে।
- Image যোগ করা হয়েছে যাতে একটি ছবি প্রিন্ট প্রিভিউতে প্রদর্শিত হয়।
সারাংশ (Summary)
- Print Preview তৈরি করার জন্য PrintDialog, FixedDocument, এবং FixedPage কন্ট্রোল ব্যবহার করা হয়।
- FixedDocument ব্যবহার করে একাধিক পৃষ্ঠা তৈরি করা সম্ভব, এবং প্রতিটি পৃষ্ঠায় কাস্টম কন্টেন্ট যেমন টেক্সট, ছবি, টেবিল ইত্যাদি যোগ করা যায়।
- Print Preview কাস্টমাইজ করার মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনের প্রিন্ট আউট আরও আকর্ষণীয় এবং ব্যবহারযোগ্য করে তুলতে পারেন।
- PrintDialog.PrintDocument মেথড ব্যবহার করে প্রিন্ট প্রিভিউ দেখানো হয় এবং প্রিন্টের জন্য প্রস্তুত করা হয়।
WPF তে Print Preview তৈরি করার মাধ্যমে, ব্যবহারকারীরা তাদের ডকুমেন্ট প্রিন্ট করার আগে একটি সঠিক প্রিভিউ দেখতে পায় এবং প্রয়োজনে সংশোধন করতে পারে।
Read more