延迟加载:如何使用pdf.js将多个pdf文档显示为一个?

问题描述 投票:0回答:1

我的目的是在懒惰模式下使用pdf.js显示pdf,我有两种选择:

  1. 使用disableRange = false在nginx中使用url时,它工作正常,但是当我使用java sevlet url:/ dowload / fileid / 123时,它不会通过206部分内容(范围请求)加载,而是通过200加载,然后在查看器中查看。

public void download(String identNo,HttpServletRequest request,HttpServletResponse response) {
		File file = getFileFromServer(identNo);
        BufferedInputStream bis = null;
        OutputStream os = null;
        BufferedOutputStream bos = null;
        InputStream is = null;
        try {
            is =new FileInputStream(file);
            bis = new BufferedInputStream(is);
            os = response.getOutputStream();
            bos = new BufferedOutputStream(os);
            int startByte,endByte,totalByte;
            if (request != null && request.getHeader("range") != null) {
                String[] range = request.getHeader("range").replaceAll("[^0-9\\-]", "").split("-");
                totalByte = is.available();
                startByte = Integer.parseInt(range[0]);
                if (range.length > 1) {
                    endByte = Integer.parseInt(range[1]);
                } else {
                    endByte = totalByte - 1;
                }
                     response.setStatus(206);
            } else {
                totalByte = is.available();
                startByte = 0;
                  endByte = totalByte - 1;
                response.setHeader("Accept-Ranges","bytes");
                response.setStatus(200);
            }
            int length = endByte - startByte + 1;
            response.setHeader("Accept-Ranges", "bytes");
            response.setHeader("Content-Range", "bytes " + startByte + "-" + endByte + "/" + totalByte);
            response.setContentType("Content-Type: application/octet-stream");
            response.setContentLength(length);
            bis.skip(startByte);
            int len = 0;
            byte[] buff = new byte[1024 * 64];
            while ((len = bis.read(buff, 0, buff.length)) != -1) {
                if (length <= len) {
                    bos.write(buff, 0, length);
                    break;
                } else {
                    length -= len;
                    bos.write(buff, 0, len);
                }
            }
        } catch (IOException e) {
        } finally {
            FileUtil.closeQuiet(bos);
            FileUtil.closeQuiet(os);
            FileUtil.closeQuiet(bis);
            FileUtil.closeQuiet(is);
        }

	}
  1. 在服务器端吐出较大的pdf文件,然后使用pdf.js将多个pdf文档显示为一个

我发现了这个:Is there a way to combine PDFs in pdf.js?但是它需要一次加载所有文件,我需要的是:当滚动到文件底部时,加载下一个文件然后合并到当前pdf

javascript java range pdf.js
1个回答
0
投票
  1. PDF.js,设置参数:“ disableAutoFetch”:true,“ disableStream”:true
  2. 服务器支持接受范围,范围然后pdf.js,现在只能从服务器上看到页面中的数据提取]
© www.soinside.com 2019 - 2024. All rights reserved.