PDF.JS的基本使用

                    PDF.js的使用

网上下载的pdf.js的目录结构

目录结构

  1. 使用pdf.js浏览pdf
    只需要修改viewer.js文件的pdf路径即可
    var DEFAULT_URL = ‘xx.pdf’;(指定xx.pdf为默认打开文件)
    但是我们在实际的使用过程中,是需要通过传值的方式灵活的选择pdf进行预览
    首先,把viewer.js的 DEFAULT_URL 改成空,修改为
    http://localhost:8080/pdf/web/viewer.html?file=xx.pdf
    可以通过在file后面进行字符串拼接,这样可以选择需要预览的pdf文件

  2. 在项目中使用pdf.js进行文件预览

<iframe src="<c:url value="static/pdf/web/viewer.html"/>?file=xx.pdf" width="100%" height="800"></iframe> 

可以使用iframe标签,上面的代码,只是访问pdf下的viewer.html页面,但是后面跟着的file参数则可以指定那个pdf文件做为对象
这样的问题是,只能预览工程里面的pdf文件,所以可以使用流来预览本地的文件

<iframe id="displayPdfIframe" width="100%" height="800"></iframe>

写下相应的JS

$(function() {
    $("#displayPdfIframe").attr("src",'<c:url value="static/pdf/web/viewer.html" />?file=' + encodeURIComponent('<%=basePath%>pdfStreamHandeler.do?filePath=传递的参数'));  
        });

后台的相应的方法

@RequestMapping(value = "/pdfStreamHandeler")
    public void pdfStreamHandeler(String filePath, HttpServletRequest request, HttpServletResponse response) {

        String s = "E:/"+filePath;//根据自己实际情况拼接路径
        File file = new File(s);
        byte[] data = null;
        try {
            FileInputStream input = new FileInputStream(file);
            data = new byte[input.available()];
            input.read(data);
            response.getOutputStream().write(data);
            input.close();
        } catch (Exception e) {
            logger.error("pdf文件处理异常:" + e.getMessage());
        }

    }

通过流可以获取到自己想要的pdf文件,然后pdf.js就会找到这个pdf

补充:
PDF.js这个进行预览,上面一栏有很多工具,比如,打印,下载,这些功能,有时候项目中并不需要提供下载功能,这个工具也能隐藏掉下载按钮
在viewer.html这个界面的180行左右

<button id="download" class="toolbarButton download hiddenMediumView" title="Download" tabindex="34" data-l10n-id="download">
                  <span data-l10n-id="download_label">Download</span>
   </button>

将这句注释掉即可,就会隐藏掉下载的按钮
这是别的博主写的方法,但是自己在隐藏下载按钮的时候遇见了一个问题,仅仅只将这句注释掉,我这边再进行预览的时候,上面的工具全部消失不见了,预览效果也没了,打开F12进行检查的时候,发现了JS报错,发现是viewer.js的问题

document.getElementById('download').addEventListener('click',
 SecondaryToolbar.downloadClick.bind(SecondaryToolbar));

大概在5856行,把这两句注释掉即可(好像就我遇到了这个问题,如果你也遇见了,可以试试看是不是这个问题)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值