You can use a stream other than a memory-one (for example, a binary file stream) and write to it.
This could look like:
using (FileStream fs = File.Open("First_PDF_document.pdf"))
using(Document document = new Document(PageSize.A4, 25, 25, 30, 30))
using(PdfWriter writer = PdfWriter.GetInstance(document, fs))
{
document.Open();
document.Add(new Paragraph("Hello World"));
document.Close();
writer.Close();
fs.Close();
}
This way you do not construct a Response object (relative to web connections), but rather an actual file on your filesystem.
Hope this helps.
PS: you may have to adapt the content of using blocks a little bit; I currently have no IDE installed on my computer, so unable to test for that piece of code.