Multi-Page এবং Custom Page Layout Printing

MFC Printing এবং Print Preview Implementation - এমএফসি (MFC) - Microsoft Technologies

378

MFC (Microsoft Foundation Classes) তে Multi-Page এবং Custom Page Layout প্রিন্টিং একটি সাধারণ প্রক্রিয়া, যা আপনাকে একাধিক পেজে ডেটা প্রিন্ট করার সুবিধা দেয়। এই প্রক্রিয়ায় আপনি কাস্টম পেজ সাইজ, লেআউট এবং কন্টেন্ট নিয়ন্ত্রণ করতে পারবেন। প্রিন্টিংয়ের জন্য MFC এর CDC (Device Context) এবং CPrintDialog ক্লাসগুলোর ব্যবহার গুরুত্বপূর্ণ।

এখানে আমরা আলোচনা করব কিভাবে MFC তে Multi-Page এবং Custom Page Layout তৈরি করা যায় এবং কিভাবে কাস্টম প্রিন্টিং অপশনগুলো কনফিগার করা যায়।


Multi-Page Printing

Multi-Page Printing এর মাধ্যমে আপনি একাধিক পেজে ডেটা প্রিন্ট করতে পারবেন। MFC তে এটি সাধারনত OnBeginPrinting(), OnPrint() এবং OnEndPrinting() ফাংশনের মাধ্যমে করা হয়।

1. প্রিন্টিংয়ের জন্য প্রস্তুতি

প্রথমে, আপনার অ্যাপ্লিকেশনে প্রিন্টিং শুরু করার জন্য OnBeginPrinting() মেথডটি কাস্টমাইজ করতে হবে। এই মেথডে প্রিন্টারের কনফিগারেশন ও প্রয়োজনীয় ইনফরমেশন সেট করা হয়।

void CMyDoc::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
    // প্রিন্টিংয়ের জন্য কিছু ইনিশিয়ালাইজেশন
    pInfo->SetMaxPage(10);  // মোট পেজ সংখ্যা (এটি আপনি ডাইনামিকভাবে পরিবর্তন করতে পারেন)
}

এখানে, SetMaxPage() মেথডের মাধ্যমে আপনি মোট পেজের সংখ্যা সেট করতে পারেন।

2. ডেটা প্রিন্টিং

OnPrint() ফাংশনে আপনি প্রতিটি পেজের জন্য ডেটা প্রিন্ট করতে পারেন। এখানে আপনি প্রিন্টারের জন্য CDC (Device Context) ব্যবহার করেন যা আপনাকে পেজে ডেটা রেন্ডার করতে সাহায্য করবে।

void CMyDoc::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
    int pageNum = pInfo->GetCurrentPage();
    
    // এখানে আপনার কাস্টম ডেটা প্রিন্ট করতে হবে
    CString str;
    str.Format(_T("Page Number: %d"), pageNum);
    
    // ডেটা প্রিন্ট করুন
    pDC->TextOut(100, 100, str);  // পেজে টেক্সট প্রিন্ট করুন
}

এখানে, GetCurrentPage() ব্যবহার করে প্রতিটি পেজের জন্য কন্টেন্ট প্রিন্ট করা হচ্ছে।

3. প্রিন্টিং শেষ হওয়া

প্রিন্টিংয়ের শেষে আপনি OnEndPrinting() মেথড ব্যবহার করতে পারেন, যেখানে আপনি যদি কোনো রিসোর্স ব্যবহার করে থাকেন (যেমন ফাইল বা কাস্টম ডিভাইস কন্টেক্সট) তা মুক্ত করবেন।

void CMyDoc::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
{
    // রিসোর্স ফ্রি করা বা অন্যান্য ক্লিনআপ কাজ
}

এটি প্রিন্টিং প্রক্রিয়া সম্পূর্ণ হওয়ার পর কোন ক্লিনআপ বা রিসোর্স রিলিজ করার জন্য ব্যবহার করা হয়।


Custom Page Layout Printing

Custom Page Layout Printing এর মাধ্যমে আপনি কাস্টম পেজ সাইজ, মার্জিন, পেজ লেআউট ইত্যাদি কাস্টমাইজ করতে পারেন। MFC তে CDC এবং CPrintDialog এর মাধ্যমে পেজ লেআউট এবং সাইজ কাস্টমাইজ করা যায়।

1. CPrintDialog এবং কাস্টম পেজ সাইজ নির্বাচন

MFC তে CPrintDialog ব্যবহার করে আপনি প্রিন্টারের পছন্দসই সেটিংস এবং পেজ সাইজ কাস্টমাইজ করতে পারেন। আপনি প্রিন্ট ডায়ালগে কাস্টম পেজ সাইজ যোগ করতে পারেন।

void CMyApp::OnFilePrint()
{
    CPrintDialog printDlg(FALSE);  // FALSE for printer selection dialog
    printDlg.GetDefaults();
    
    // কাস্টম পেজ সাইজ সেট করা
    printDlg.m_pd.nPageSize = DMPAPER_A4;  // A4 সাইজ ব্যবহার করা
    printDlg.DoModal();
    
    // প্রিন্টিংয়ের কোড
    CPrintInfo printInfo;
    CDocument* pDoc = GetActiveDocument();
    pDoc->Print(&printInfo);
}

এখানে DMPAPER_A4 দিয়ে A4 সাইজের কাস্টম পেজ সাইজ সেট করা হয়েছে। আপনি অন্যান্য পেজ সাইজও ব্যবহার করতে পারেন।

2. Custom Layout Configuration (Margins, Orientation)

MFC তে আপনি CDC এর মাধ্যমে মার্জিন এবং পেজ অরিয়েন্টেশন কাস্টমাইজ করতে পারেন। পেজ অরিয়েন্টেশন Portrait বা Landscape নির্বাচন করা যেতে পারে এবং মার্জিনের জন্য SetMargins() ব্যবহার করা হয়।

void CMyDoc::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
    // পেজ অরিয়েন্টেশন সেট করা
    pDC->SetMapMode(MM_TEXT);
    
    // মার্জিন কাস্টমাইজ করা
    int leftMargin = 100, topMargin = 100;
    pDC->SetWindowExt(100, 100);
    pDC->SetViewportExt(leftMargin, topMargin);
    
    // পেজে ডেটা প্রিন্ট করা
    CString str;
    str.Format(_T("Custom Layout Printing"));
    pDC->TextOut(leftMargin, topMargin, str);
}

এখানে, আপনি SetWindowExt() এবং SetViewportExt() মেথডের মাধ্যমে মার্জিন এবং পেজ সাইজ কাস্টমাইজ করতে পারেন।

3. Custom Page Content Rendering

কাস্টম পেজ লেআউট তৈরি করার জন্য আপনি পেজের বিভিন্ন অংশে কন্টেন্ট প্রিন্ট করতে পারেন, যেমন:

  • টেবিল, চার্ট, গ্রাফ বা কাস্টম গ্রাফিক্স প্রিন্ট করা
  • একাধিক কলাম বা পেজে ভেঙে কন্টেন্ট প্রিন্ট করা
void CMyDoc::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
    int pageNum = pInfo->GetCurrentPage();
    CString str;
    str.Format(_T("Custom Page Layout - Page %d"), pageNum);
    
    // পেজে প্রিন্ট করা
    pDC->TextOut(150, 150, str);  // কাস্টম পজিশনে প্রিন্ট করা
}

এখানে কাস্টম লেআউটে পেজে প্রিন্ট করা হয়েছে। আপনি চাইলে অন্যান্য গ্রাফিক্সও প্রিন্ট করতে পারেন, যেমন DrawText, Rectangle, বা Ellipse


সারাংশ

MFC তে Multi-Page এবং Custom Page Layout Printing আপনাকে একাধিক পেজে প্রিন্ট এবং কাস্টম পেজ সাইজ, লেআউট, মার্জিন ইত্যাদি কাস্টমাইজ করার সুযোগ দেয়। CDC এবং CPrintDialog এর মাধ্যমে আপনি প্রিন্টিংয়ের সময় কাস্টম পেজ সাইজ, মার্জিন, অরিয়েন্টেশন এবং কন্টেন্ট কাস্টমাইজ করতে পারেন। আপনি যখন একাধিক পেজ প্রিন্ট করেন, তখন OnBeginPrinting(), OnPrint() এবং OnEndPrinting() ফাংশনগুলো ব্যবহার করে ডেটা প্রিন্ট করতে পারেন এবং পেজ লেআউট নিয়ন্ত্রণ করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...