Servlet返回已损坏' .pdf'文件

时间:2015-10-01 10:25:40

标签: java servlets stream

也许我不理解这些流,但我有这样的servlet:

String filename  = "test.pdf";          
String Str1 = new String("Lorem ipsum dolor sit amet, eos omnes mandamus in, modus voluptua ei mel. Nec et illud facete maluisset, ");
byte[] Str2 = Str1.getBytes();

InputStream inputStream = null;
inputStream = new ByteArrayInputStream(Str2);

byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
ByteArrayOutputStream baos = new ByteArrayOutputStream();

int bytesRead;
while (  (bytesRead = inputStream.read(buffer)) != -1)
   baos.write(buffer, 0, bytesRead);

response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
OutputStream os = response.getOutputStream();
baos.writeTo(os);
os.flush();
os.close();

但是当我在保存错误之后尝试打开文件时:

enter image description here

我检查了,并且baos有字符串" Lorem ipsum"。我做错了什么?

1 个答案:

答案 0 :(得分:3)

您只能发送一个string作为PDF,并期望它采用PDF格式。这与保存扩展名为text的{​​{1}}文件相同。

您必须使用类似Apache PDFBox的库将字符串转换为pdf格式。查看他们的example文档。