我正在做一个JSP站点,我需要显示PDF文件。 我有webservice的PDF文件的字节数组,我需要在HTML中将该字节数组显示为PDF文件。我的问题是如何将该字节数组转换为PDF并在新选项卡中显示该PDF。
答案 0 :(得分:3)
使用输出流将这些字节保存在磁盘上。
FileOutputStream fos = new FileOutputStream(new File(latest.pdf));
//create an object of BufferedOutputStream
bos = new BufferedOutputStream(fos);
byte[] pdfContent = //your bytes[]
bos.write(pdfContent);
然后将其链接发送到客户端以从那里打开。 比如http://myexamply.com/files/latest.pdf
答案 1 :(得分:3)
更好的是为此使用servlet,因为你不想提供一些html,但是你想要传输一个字节[]:
public class PdfStreamingServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(final HttpServletRequest request,
final HttpServletResponse response) throws ServletException,
IOException {
processRequest(request, response);
}
public void processRequest(final HttpServletRequest request,
final HttpServletResponse response) throws ServletException,
IOException {
// fetch pdf
byte[] pdf = new byte[] {}; // Load PDF byte[] into here
if (pdf != null) {
String contentType = "application/pdf";
byte[] ba1 = new byte[1024];
String fileName = "pdffile.pdf";
// set pdf content
response.setContentType("application/pdf");
// if you want to download instead of opening inline
// response.addHeader("Content-Disposition", "attachment; filename=" + fileName);
// write the content to the output stream
BufferedOutputStream fos1 = new BufferedOutputStream(
response.getOutputStream());
fos1.write(ba1);
fos1.flush();
fos1.close();
}
}
}
答案 2 :(得分:1)
可悲的是,您没有告诉我们您使用的技术。
使用Spring MVC,使用@ResponseBody
作为控制器方法的注释,并简单地返回字节:
@ResponseBody
@RequestMapping(value = "/pdf/shopping-list.pdf", produces = "application/pdf", method=RequestMethod.POST)
public byte[] downloadShoppingListPdf() {
return new byte[0];
}
在新标签页中打开是一个无关紧要的事情,必须在HTML中处理。