http://www.microsoft.com/China/Community/TechZone/TechArticle/TechDoc/xmlwebprint.asp

解决方案 »

  1.   

    public class PrintingExample 
    {
        private Font printFont;
        private StreamReader streamToPrint;
        static string filePath;
        public PrintingExample() 
        {
            
        }    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) ;        // Iterate over the file, printing each line.
            while (count < linesPerPage && 
               ((line=streamToPrint.ReadLine()) != null)) 
            {
               yPos = topMargin + (count * printFont.GetHeight(ev.Graphics));
               ev.Graphics.DrawString (line, printFont, Brushes.Black, 
                  leftMargin, yPos, new StringFormat());
               count++;
            }        // If more lines exist, print another page.
            if (line != null) 
               ev.HasMorePages = true;
            else 
               ev.HasMorePages = false;
        }    // Print the file.
        private void Button1_Click(object sender,System.EventArgs e)
        {
            try 
            {
               streamToPrint = new StreamReader (filePath);
               try 
               {
                  printFont = new Font("Arial", 10);
                  PrintDocument pd = new PrintDocument(); 
                  pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
                  pd.Print();
               } 
               finally 
               {
                  streamToPrint.Close() ;
               }
           } 
           catch(Exception ex) 
           { 
               MessageBox.Show(ex.Message);
           }
        }
        public static void Main(string[] args) 
        {
           string sampleName = Environment.GetCommandLineArgs()[0];
           if(args.Length != 1)
           {
              Console.WriteLine("Usage: " + sampleName +" <file path>");
              return;
           }
           filePath = args[0];
           new PrintingExample();
        }
    }