【问题标题】:How to get byte-array data from servlet to pdf.js如何从 servlet 获取字节数组数据到 pdf.js
【发布时间】:2014-05-29 14:46:20
【问题描述】:

我怎样才能得到这个:

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的?
  • 不,幕后实际发生的是 servlet 进入文件系统并获取文件。本质上,浏览器告诉 servlet 在哪里可以找到文件,并且 servlet 知道从那里做什么
  • 您将文件内容转换为字节数组的代码很好。那么你的问题是什么?
  • 我想知道 javascript 是如何知道从 servlet 中获取数据的。我使用 jquery 提交启动 doPost,但是 javascript 如何知道从 doPost 返回的数据应该在该特定函数中使用
  • 所以你的 javascript 向 servlet 发送一个 post 请求并获取数据。现在 JS 应该做什么?

标签: java javascript servlets pdf


【解决方案1】:

基于example,我会说,而不是

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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    相关资源
    最近更新 更多