6 Mayıs 2017 Cumartesi

PrintDocument Sınıfı

Giriş
Şu satırı dahil ederiz.
using System.Drawing.Printing;
Constructor
Şöyle yaparız.
//  Connect to the printer
PrintDocument printDocument1 = new PrintDocument();
BeginPrint Event
Şöyle yaparız.
printDocument1.BeginPrint += new PrintEventHandler(BeginPrint);
Handler şöyledir. Önce bir enumerator tanımlanır.
List<string> pageData = new List<string>();
//enumerator for iteration thru "pages"
IEnumerator pageEnumerator;
Daha sonra sayfalar hazırlanır.
void BeginPrint(object sender, PrintEventArgs e)
{
  //  Convert string to strings
  string[] delim = { "<<< Page >>>" };

  //generate some dummy strings to print
  pageData = stringToPrint.Split(delim, StringSplitOptions.RemoveEmptyEntries).
             ToList();

  // get enumerator for dummy strings
  pageEnumerator = pageData.GetEnumerator();

  //position to first string to print (i.e. first page)
  pageEnumerator.MoveNext(); 
}
Dispose metodu
Şöyle yaparız.
printDocument1.Dispose();
Print metodu
Şöyle yaparız.
//do print
printDocument1.Print();
PrintPage Event
Şöyle yaparız.
printDocument1.PrintPage += new PrintPageEventHandler(PrintPage);
Handler şöyledir.
void PrintPage(object sender, PrintPageEventArgs e)
{
  //define font, brush, and print area
  Font font = new Font("Times New Roman", 12);
  Brush brush = Brushes.Black;
  RectangleF area = new RectangleF(0, 0,
   printDocument1.DefaultPageSettings.PrintableArea.Width,
   printDocument1.DefaultPageSettings.PrintableArea.Height);

  //print current page
  e.Graphics.DrawString(myPageEnumerator.Current.ToString(), font, brush, area);

  // advance enumerator to determine if we have more pages.
  e.HasMorePages = myPageEnumerator.MoveNext();

}
Şöyle yaparız.
void PrintPage(object sender, PrintPageEventArgs e)
{
  Graphics graphic = e.Graphics;
  SolidBrush brush = new SolidBrush(Color.Black);

  Font font = new Font("Courier New", 27, FontStyle.Bold);

  float pageWidth = e.PageSettings.PrintableArea.Width;
  float pageHeight = e.PageSettings.PrintableArea.Height;

  float fontHeight = font.GetHeight();
  int startX = 40;
  int startY = 40;
  int offsetY = 40;
  ...
  
  brush.Dispose();
  font.Dispose();

}

Hiç yorum yok:

Yorum Gönder