2012-06-11 3 views
1

У меня есть сервлет, где я хочу, когда пользователь нажимает одну кнопку, он будет генерировать динамический pdf (в соответствии с данными пользователя) и загрузить его в c:/location пользователя. Может ли кто-нибудь помочь мне, как это сделать?Servlet pdf download button creation

+0

@Poindexter, на самом деле, я понятия не имею, как это сделать. – alessandro

+0

Вы знаете, как сгенерировать PDF-файл, и вы пытаетесь узнать, как загрузить его пользователю? Для загрузки файла из браузера требуется, чтобы пользователь выбрал место для хранения файла. –

+0

@ DavidOlivánUbieto, ОК. Можете ли вы помочь, как это сделать, это загрузка в указанном пользователем месте? – alessandro

ответ

4

Что именно неясно? Как написать html-форму? Как получить параметры из HttpServletRequest? Или как создать PDF-файл и загрузить пользователя?

<form action="yourServlet"> 
<input type="text" name="sometxt"/> 
<input type="secret" name="passwd"/> 
<input type="submit"/> 
</form> 

Затем, вы можете получить его в вашем методе getXXX как

final String text = request.getParameter("sometxt"); 
final String rawPassword = request.getParameter("secret"); 

Если вам необходимо визуализировать PDF, вы должны смотреть на Apache PdfBox.

И, наконец, если вы не в ладах с загрузкой файла пользователь:

response.setContentType("application/pdf"); 
InputStream in = ... // depends where you store your file 
ServletOutputStream out = response.getOutputStream(); 
byte[] buffer = new byte[4096]; 
while(in.read(buffer, 0, 4096) != -1) 
    out.write(buffer, 0, 4096); 
in.close(); 
out.flush(); 
out.close(); 

И не забывайте о handilng IOException, который я пропустил в целях simpicity.

3

Вот хороший пример сервлета Java для загрузки файла: http://www.dzone.com/snippets/example-file-download-servlet.

Обратите внимание, что нет необходимости спрашивать пользователя, где загрузить файл, который обрабатывается механизмом загрузки браузера.

Здесь также есть полезная информация: http://www.mkyong.com/java/how-to-download-file-from-website-java-jsp/.