从servlet获取字节数组数据到pdf.js的方法

3
我该如何获取这个东西:
File file = new File(doneDir + "\\" + batchName + "\\" + fileName);
byte[] by = new byte[(int) file.length()];
FileInputStream fis = new FileInputStream(file);
fis.read(by);
fis.close();

response.setContentType("application/pdf");
response.setHeader("Content-disposition", "attachment; filename=TheDocument." + "pdf");
response.getOutputStream().write(by);
response.getOutputStream().flush();
response.getOutputStream().close();

从我的servlet中的doGet或doPost到pdf.js函数:

var data = (byte array returned from servlet)
PDFJS.getDocument(data).then(function(pdf) {});

你的 PDF 是从浏览器上传到 Servlet 的吗? - Hirak
不,实际上发生的是servlet进入文件系统并获取文件。 基本上,浏览器告诉servlet在哪里找到文件,servlet从那里知道该怎么做。 - Chandler E.
你的将文件内容转换为字节数组的代码没问题。那么你遇到了什么问题? - Hirak
我在想JavaScript是如何知道从servlet传递的数据。我使用jQuery submit来启动doPost,但是JavaScript如何知道从doPost返回的数据应该在哪个特定函数中使用。 - Chandler E.
你的 JavaScript 发送一个 POST 请求到 Servlet 并获取数据。现在 JS 应该做什么? - Hirak
我希望从servlet返回的数据可以在这个函数中使用:PDFJS.getDocument(data).then(function(pdf) {}); - Chandler E.
1个回答

1
根据 示例,我认为应该是这样,而不是


var data = (byte array returned from servlet)
PDFJS.getDocument(data).then(function(pdf) {});

我认为你应该使用:


PDFJS.getDocument(servlet_url).then(function(pdf) {
   // you can now use *pdf* here
});

返回PDF文件的Servlet对于客户端来说应该与服务器上的PDF文件没有区别,示例使用PDFJS.getDocument('helloworld.pdf').then(...,因此这个函数显然需要一个URL。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接