Считать содержимое файла в байтовый массив.
Затем сделайте запрос на сервлет или сервис, например. таким образом:
Window.Location.replace("rest/downloadPdf");
Эта служба должна возвращать Ответ с правильным типом содержимого:
@Path("downloadPdf")
@GET
@Produces({"application/pdf"})
@Consumes(MediaType.TEXT_PLAIN)
public Response downloadPdf() throws Exception {
byte[] bytes = getYourPDFContents();
return Response
.ok(bytes, MediaType.APPLICATION_OCTET_STREAM)
.header("Content-Disposition", "attachment; filename=\"yourFile.pdf\"")
.build();
}
Браузер покажет диалоговое окно «Сохранить как».
Это пример службы, вы должны включить библиотеку Джерси в свой проект, чтобы иметь возможность использовать метод, как я написал выше.