Non ho il codice a portata di mano adesso, ma ho provato e funziona.

Devi dividere la tua procedura in due procedure. La prima crea lo stream (o filestream o memorystream), e la seconda crea il documento pdf.
In basic è più o meno così

codice:
Protected Sub LinkButton1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LinkButton1.Click
	Using fs As New FileStream("c:\tmp\Chap0101.pdf", FileMode.Create)
		Dim doc As t.Document = Nothing

		Try
			doc = New t.Document()
			p.PdfWriter.GetInstance(doc, fs)

			doc.Open()
			CreateDoc(doc)

			Response.Redirect("/tmp/Chap0101.pdf")

		Catch ex As Exception
			l.PrintLn(ex.Message) : Return

		Finally
			Try
				If doc IsNot Nothing AndAlso doc.IsOpen Then doc.Close()
			Catch ex As Exception

			End Try

		End Try

	End Using

End Sub
Nella procedura CreateDoc usi le tue istruzioni (attento che qui dove scrivo non ho controllato, ma ho provato in uffcio e va)

string strQuery = "select * from tbl_abc";
OdbcCommand Sqlcmd = new OdbcCommand(strQuery);
DataTable dt = GetData(Sqlcmd);

GridView GridView1 = new GridView();
GridView1.AllowPaging = false;
GridView1.DataSource = dt;
GridView1.DataBind();

StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
GridView1.RenderControl(hw);
StringReader sr = new StringReader(sw.ToString());

HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
htmlparser.Parse(sr);


dove pdfDoc è il documento che passi alla procedura.


L'altro modo è quello di lavorare con la memoria. Si usa il Memorystream e, alla fine si decide se salvare nel flusso di uscita o in file (fai una ricerca con "memorystream to file"