Чтобы веб-браузер загружал файл, который в противном случае отображался бы как встроенный, веб-сервер должен предоставить ему заголовок:
Content-Disposition: attachment
Ничто из того, что вы можете сделать на стороне клиента с помощью iframes или JavaScript, не повлияет на это.