usando ItextSharp aqui te mando un sample
  
Código:
 HttpContext.Current.Response.Clear();
	HttpContext.Current.Response.ContentType = "application/pdf";
        HttpContext.Current.Response.AddHeader("Content-disposition", "filename=PedidoNumero" +tuID+ ".pdf");        
        MemoryStream ms = new MemoryStream();
	Document xy = new Document(PageSize.A4);        
        PdfWriter writer = PdfWriter.GetInstance(xy, ms);	
	xy.Open();
        iTextSharp.text.Image imagenLogo= iTextSharp.text.Image.GetInstance(new Uri(urlLogoReporte));
	imagenLogo.ScalePercent(50, 50);
	imagenLogo.SetDpi(1000,1000);
        iTextSharp.text.Image imagenChart1=iTextSharp.text.Image.GetInstance(new Uri(urlGrafica1)); 
       iTextSharp.text.Image imagenChart2=iTextSharp.text.Image.GetInstance(new Uri(urlGrafica2)); 
	imagenChart1.SetDpi(1000,1000);
	imagenChart2.SetDpi(1000,1000);
// Mi tabla para alinear mis graficas a la pagina del pdf.
iTextSharp.text.Table tablecharts=new iTextSharp.text.Table(2,1);
tablecharts.CellsFitPage =true;
tablecharts.Width=110;
tablecharts.Cellpadding=1;
tablecharts.AddCell(new Cell(imagenChart1),0,0);
tablecharts.AddCell(new Cell(imagenChart2),0,1);
tablecharts.BorderWidth = 0;
        xy.AddAuthor("Creado por Peterpay");
	xy.Add(imagenLogo); // Agrego Logo
	xy.Add(new Paragraph(""));
	xy.Add(new Paragraph(Titulo)); // Agrego Titulo
	xy.Add(new Paragraph(""));		
        xy.Add(tablecharts); // Agrego Mis graficas q estan dentro del table
	xy.Add((tablaXY); // Agrego mi detalle de pedido
        xy.Close();
        HttpContext.Current.Response.OutputStream.Write(ms.GetBuffer(), 0, ms.GetBuffer().Length);
	HttpContext.Current.Response.OutputStream.Flush();
        HttpContext.Current.Response.OutputStream.Close();
        HttpContext.Current.Response.End();
    	ms.Close(); // Cierro el MemoryStream
  tablaXY lo deberas definir como un PDFPTable y ahi puedes poner con un ciclo tus items del pedido 
Es solo hacer un for e ir alimentandolo con tu fuente de datos.