我的目标是在用户点击pdf或xls链接时显示相应的文件。 pdf或xlsfile的内容作为blob存储在表中。存储过程将文件ID作为输入参数,并将blob作为输出返回。 我希望能够显示该文件,我不知道该如何去做。在做一些阅读时看起来我可以使用itest。 有没有办法使用itext将blob转换为pdf(或xls)。这可能吗? 我无法找到任何使用blob数据类型的示例。
答案 0 :(得分:0)
Apache Commons IO库中的IOUtils
类有一个方法copy
,它将所有字节从InputStream
复制到OutputStream
。请参阅Javadoc。
因此,一旦您获得了blob和HTTP响应,就可以编写
OutputStream httpOutputStream = httpResponse.getOutputStream();
InputStream blobInputStream = theBlob.getBinaryStream();
IOUtils.copy(blobInputStream, httpOutputStream);
blobInputStream.close();
httpOutputStream.close();
复制数据。或者您可能希望将两个close()
调用放在finally
块中。
如果您还没有使用Apache Commons,请不要忘记下载jar并将其添加到类路径中。
答案 1 :(得分:0)
(由于信誉不佳,无法评论David解决方案)
如果BLOB记录中的内容是PDF二进制数据,您实际上不需要对iText做任何事情。
如果您之前没有将BLOB保存到磁盘并且想要(根据您的描述)只显示,您可以在HTTP响应上设置内容类型以指示浏览器如何处理它:
response.setContentType("application/pdf"); // for PDF
response.setContentType("application/vnd.ms-excel"); // For BIFF .xls files
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); // For Excel2007 and above .xlsx files