I can say I know the answer to this but I have to ask why you would need to do this via webmethod when a regular server side event would likely result in the same UI experience.
This is how I do it:
in a button click event:
Response.Clear();
Response.ClearHeaders();
Response.ContentType = "application/pdf";
//can also be "inline" instead of "attachment" to display immediately
Response.AddHeader("Content-Disposition", "attachment; filename=DefaultSaveName.pdf");
//you could also copy bytes to Reponse.OutputStream
Response.WriteFile(@"C:\blah\pdf\mypdf.pdf");
Response.End()
This results in no visible flash or flicker in the browser so I'm not sure what ajax buys you here.
If you are able to do it the ajax way please post how. I'm curious how you'll get around the browser security.