As you have specified that you want to print customized contents of the form beside DataGridView and also mentioned that you are able to print the datagridview. Some lines of code are here below for print other contents of the form like image, text, date etc.:
string app_path = System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
Point p2 = new Point(900, 5);
e.Graphics.DrawImage(Image.FromFile(app_path + "\\Books.ico"), p2);
e.Graphics.DrawString("Books List - Subjectwise",
new Font(dataGridView3.Font, FontStyle.Bold),
Brushes.Black, e.MarginBounds.Left - 15,
e.MarginBounds.Top - e.Graphics.MeasureString("Books List - Subjectwise",
new Font(dataGridView3.Font, FontStyle.Bold),
e.MarginBounds.Width).Height - 10);
String strDate = DateTime.Now.ToLongDateString();
e.Graphics.DrawString(strDate,
new Font(dataGridView3.Font, FontStyle.Bold), Brushes.Black,
e.MarginBounds.Left - 15 +
(e.MarginBounds.Width - e.Graphics.MeasureString(strDate,
new Font(dataGridView3.Font, FontStyle.Bold),
e.MarginBounds.Width).Width) - 100,
e.MarginBounds.Top - e.Graphics.MeasureString("Report Date",
new Font(new Font(dataGridView3.Font, FontStyle.Bold),
FontStyle.Bold), e.MarginBounds.Width).Height - 13);
Above Code is written in C#2.0
Hope this will be useful for you.