title: c# easy way to print formatted data
body: <p>I'm looking for a simple way to print DIN-A4 paper with data from a database on it. The data should be filled into multiple tables with borders. Some of the data should have a different text format p.e. bold or underlined. I should also be able to print multiple images onto that sheet.</p>
  
  <p>The program should be a Windows Forms Application or a console application written in C#.</p>
  
  <p>Which is the easiest / most common way to format data and print it like that?</p>
  
  <p>Any suggestions apreciated :)</p>
  
  <p>EDIT:</p>
  
  <p>this is my current code with almost no success. It actually prints but what I get is simply the xml file printed.</p>
  
  <pre><code>        private void printButton_Click(object sender, EventArgs e)
      {
  
          string printPath = System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
          fileToPrint = new System.IO.StreamReader(printPath + @"\test.xml");
          printFont = new System.Drawing.Font("Arial", 10);
  
          PrintDocument printDocument1 = new PrintDocument();
          printDocument1.PrintPage += new PrintPageEventHandler(printDocument1_PrintPage);
          printDocument1.Print();
          fileToPrint.Close();
      }
  
      private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
      {
          float yPos = 0f;
          int count = 0;
          float leftMargin = e.MarginBounds.Left;
          float topMargin = e.MarginBounds.Top;
          string line = null;
          float linesPerPage = e.MarginBounds.Height / printFont.GetHeight(e.Graphics);
          while (count &lt; linesPerPage)
          {
              line = fileToPrint.ReadLine();
              if (line == null)
              {
                  break;
              }
              yPos = topMargin + count * printFont.GetHeight(e.Graphics);
              e.Graphics.DrawString(line, printFont, Brushes.Black, leftMargin, yPos, new StringFormat());
              count++;
          }
          if (line != null)
          {
              e.HasMorePages = true;
          }
      }
  </code></pre>