Print_preview in WinForms
using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Drawing.Printing;
using
System.Drawing.Drawing2D;
using
System.Drawing.Text ;
using
System.Linq;
using
System.Text;
using
System.Windows.Forms;
namespace
print_examples1
{
    public partial class Form1 : Form
    {
            private
Font printFont;
                    private
StreamReader streamToPrint;
                    private
PrintDocument pd = new
PrintDocument();
        public
Form1()
        {
            InitializeComponent();
        }
        private
void button1_Click(object
sender, EventArgs e)
        {               
            //print
priview button
            try
                   {
               OpenFileDialog
ofdlg = new OpenFileDialog();
               ofdlg.Title = "Open Text Files";
               ofdlg.DefaultExt = "txt";
               ofdlg.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
               ofdlg.FilterIndex = 2;
               if
(ofdlg.ShowDialog() == DialogResult.OK)
               {
                   this.Text
= ofdlg.FileName.ToString();
                   //string
s1=ofdlg.FileName ;
                   streamToPrint = new StreamReader(ofdlg.FileName);
                   try
                   {
                       PrintPreviewDialog
ppdlg = new PrintPreviewDialog();
                       ppdlg.Document = pd;
                       ppdlg.ShowDialog();
                   }
                   finally
                   {
                       streamToPrint.Close();
                   }
               }
           }
                        catch
(Exception ex)
                        {
                            MessageBox.Show(ex.Message);
                        }
        }
        private
void pd_PrintPage(object
sender, PrintPageEventArgs ev)
                    {
                        float
linesPerPage = 0;
                        float
yPos = 0;
                        int
count = 0;
                        float
leftMargin = ev.MarginBounds.Left;
                        float
topMargin = ev.MarginBounds.Top;
                        string
line = null;
                        //
Calculate the number of lines per page...
                        linesPerPage =
ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics);
                        // Print
each line of the file...
                        while
(count < linesPerPage && ((line = streamToPrint.ReadLine()) != null))
                        {
                            yPos = topMargin + (count *
printFont.GetHeight(ev.Graphics));
                            ev.Graphics.DrawString(line,
printFont, Brushes.Black, leftMargin,
                                yPos);
                            count++;
                        }
                        // If
more lines exist, print another page...
                        if
(line != null)
                            ev.HasMorePages = true;
                        else
                            ev.HasMorePages = false;
                    }
        private
void Form1_Load(object
sender, EventArgs e)
        {
            printFont = new Font("Arial", 10);
            pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
        }
    }
}

 
 
No comments:
Post a Comment