Assume that in your grid having 100 records, out of this you may choose 10 records while check the checkBox, you just store that checked checkboxes information alone into one datatable and based on that datatable you just print your data.
EX:
protected void btnPrint_Click(object sender,EventArgs e)
{
foreach(GridViewRow row in GV.Rows)
{
if((CheckBox)row.FindControl("chkId")).Checked == true)
{
//store checked information in datatable
}
}
// do the printing stuff on here based on that datatable.
}
This is overview of requirement. Built your code based on this..