js 实现 pdf 在线预览 打印 【完整版】

本文介绍了一种利用pdf.js库实现网页上PDF文件预览和下载的方法,详细讲解了代码实现过程,包括如何设置HTML结构、添加样式及JavaScript交互,以实现点击标题跳转至PDF预览页面并提供下载功能。
摘要由CSDN通过智能技术生成

今天想写的内容   因为网上有用的太少了,自己半摸索的实现了【文末有源码代码下载链接】。

1.说下需求:点击标题  跳转  预览的pdf  页,下载功能 可选【最好有】。

 2.实现结果 :

 

 

3.代码实现:

依赖pdf.js  【需要下载完整  控件】

下载官网:http://mozilla.github.io/pdf.js/

点击  ‘Download ’   到下载页

 

git 克隆  或者下载。

下载后文件长这样:

【重点在后面   项目如何部署组装】

1.新建一个空项目   把文件放到项目根目录下:

红色圈里 是官网下载的  就改个文件名字,然后拖进项目里,完全不用动里面任何文件记住,有需要另说。

绿色是我写的【dowwn.html   是测试文件;static  放pdf  文件】 下面贴代码:

list.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-touch-fullscreen" content="yes">
    <meta name="full-screen" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="format-detection" content="telephone=no">
    <meta name="format-detection" content="address=no">
    <title>list</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .title{
            background: #e50041;
            color: #ffffff;
            font-size: 16px;
        }
        .title{
            padding:10px 10px ;
        }
   ul{
       padding:0px 10px 10px 10px ;
   }
        li{
            list-style: none;
            border-bottom: 1px solid #eeeeee;
            height: 50px;
            line-height:50px;
        }
        a{
            text-decoration: none;
            color: #000;
        }
        .leftImg{
            width: 30px;
            vertical-align: middle;
 
        }
        .next{
            float: right;
            /*vertical-align: middle;*/
            margin-top: 4.5%;
 
        }
    </style>
</head>
<body>
<p class="title">产品说明书</p>
<ul>
    <li dataSrc = 'KD-122LA火灾探测报警器说明书.pdf' onclick="fun(this)">
        <img class="leftImg" src="img/1.png" alt=""> <span href="">KD-122LA火灾探测报警器说明书ccc</span>  <img class="next" src="img/next.png" alt="">
    </li>
    <li dataSrc = 'KD-212LA可燃气体探测器说明书.pdf' onclick="fun(this)">
        <img class="leftImg" src="img/1.png" alt=""> <span href="">KD-212LA 可燃气体探测器说明书</span>  <img class="next" src="img/next.png" alt="">
    </li>
    <li dataSrc = 'KD-216LA可燃气体探测器说明书.pdf' onclick="fun(this)">
        <img class="leftImg" src="img/1.png" alt=""> <span href="">KD-216LA可燃气体探测器说明书</span>  <img class="next" src="img/next.png" alt="">
    </li>
    <li dataSrc = 'Kd-122LA_KD-601系统遥控器使用说明.pdf' onclick="fun(this)">
        <img class="leftImg" src="img/1.png" alt=""> <span href="">Kd-122LA KD-601系统遥控器使用说明</span>  <img class="next" src="img/next.png" alt="">
    </li>
    <li dataSrc = 'KD-602LA_SOS一键救助使用说明书.pdf' onclick="fun(this)">
        <img class="leftImg" src="img/1.png" alt=""> <span href="">KD-602LA  SOS一键救助使用说明书</span>  <img class="next" src="img/next.png" alt="">
    </li>
    <li dataSrc = 'KD-701LA_溢水探测器使用说明书.pdf' onclick="fun(this)">
        <img class="leftImg" src="img/1.png" alt=""> <span href="">KD-701LA  溢水探测器使用说明书</span>  <img class="next" src="img/next.png" alt="">
    </li>
    <li dataSrc = 'KD-702LA红外人体移动探测器说明书.pdf' onclick="fun(this)">
        <img class="leftImg" src="img/1.png" alt=""> <span href="">KD-702LA红外人体移动探测器说明书</span>  <img class="next" src="img/next.png" alt="">
    </li>
    <li dataSrc = 'KD-703LA_门窗探测器使用说明书.pdf' onclick="fun(this)">
        <img class="leftImg" src="img/1.png" alt=""> <span href="">KD-703LA  门窗探测器使用说明书</span>  <img class="next" src="img/next.png" alt="">
    </li>
    <li dataSrc = 'KD-805A_WiFi系统主机使用说明书_V1.00.pdf' onclick="fun(this)">
        <img class="leftImg" src="img/1.png" alt=""> <span href="">KD-805A  WiFi系统主机使用说明书_V1.00</span>  <img class="next" src="img/next.png" alt="">
    </li>
    <li dataSrc = 'WIFI智慧家庭安防系统操作说明书_v0.01.pdf'onclick="fun(this)">
        <img class="leftImg" src="img/1.png" alt=""> <span href="">WIFI智慧家庭安防系统操作说明书_v0.01</span>  <img class="next" src="img/next.png" alt="">
    </li>
 
 
</ul>
<script src="js/jquery.min.js"></script>
<script>
    function fun(e){
     // console.log(e);
     var dataSrc = $(e).attr('dataSrc');
     //    console.log(dataSrc);
     //    sessionStorage.setItem('dataSrc',dataSrc);
     //    window.location.href='index.html'
        var urlSrc =  'http://testweixin.kingdun.net.cn/pdf/static/'+dataSrc;
        $.ajax({
            url: urlSrc,
            type: "get",
            success: function(xhr, data){
                if (navigator.userAgent.indexOf('Android') > -1) {
                    //判断移动端是android 还是ios ,若是android 则要借助pdf插件
                    window.location.href = "http://testweixin.kingdun.net.cn/pdf/pdfjs/web/viewer.html?file="+urlSrc;
                } else {
                    //ios直接打开pdf
                    //window.location.href = url;
                    window.location.href = "http://testweixin.kingdun.net.cn/pdf/pdfjs/web/viewer.html?file="+urlSrc;
                }
            },
            error: function(){
                //window.location.href = '${ctx}/core/user.androidPdf.do?mid='+mid+"&name="+storagename+"&realname="+realname;
                window.location.href = "http://testweixin.kingdun.net.cn/pdf/js/web/viewer.html?file="+urlSrc;
            }
        });
    }
</script>
</body>
 
</html>

 

完毕!

注意:
本地测试不了,http://testweixin.kingdun.net.cn   是我们运维小哥哥发版后的服务器。我写本地不对,你也可以 node.js 自己搭个服务器。

注释:window.location.href = "http://testweixin.kingdun.net.cn/pdf/pdfjs/web/viewer.html?    直接跳转到 万能的pdf 组件里的html 页,该有的  国际化和下载打印功能   人家都写好了!

【兼容性】:苹果手机:直接预览,手机系统自带的,但是 不能下载 (有得必有失),可以在 别的应用中打开  例如  wps。
                       
安卓:可预览 ,可下载,在手机默认浏览器打开  可支持下载,本人小米8,uc浏览器 下载乱码,但是 小米自带浏览器 可下载pdf文件。
交差。

 

 彩蛋:down.html 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-touch-fullscreen" content="yes">
    <meta name="full-screen" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="format-detection" content="telephone=no">
    <meta name="format-detection" content="address=no">
    <title>list</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .title{
            background: #e50041;
            color: #ffffff;
            font-size: 16px;
        }
        .title{
            padding:10px 10px ;
        }
   ul{
       padding:0px 10px 10px 10px ;
   }
        li{
            list-style: none;
            border-bottom: 1px solid #eeeeee;
            height: 50px;
            line-height:50px;
        }
        a{
            text-decoration: none;
            color: #000;
        }
        .leftImg{
            width: 30px;
            vertical-align: middle;
 
        }
        .next{
            float: right;
            /*vertical-align: middle;*/
            margin-top: 4.5%;
 
        }
    </style>
</head>
<body>
<p class="title">产品说明书</p>
 
<a href="static/1.pdf">00001</a>
 
 
</body>
 
</html>
 

 

哈哈,直接a 标签   href 跳转  pdf文件;也是ok的哦!【苹果手机:直接预览;;;安卓:下载 链接 】

【下载传送门】:

https://download.csdn.net/download/qiuyan_f/10592556

 

本文原文地址:https://blog.csdn.net/qiuyan_f/article/details/81511303

 

 

实现在线预览 PDF 文档并禁止下载和打印,可以使用 PDF.js 这个开源的 JavaScript 库来实现PDF.js 可以在浏览器中异步加载和渲染 PDF 文件,同时还提供了控制 PDF 文件显示和打印的功能。 具体实现步骤如下: 1. 引入 PDF.js 库。可以从官网 https://mozilla.github.io/pdf.js/ 下载最新版的 PDF.js,然后在 HTML 页面中引入 js 文件。 ```html <script src="path/to/pdf.js"></script> ``` 2. 加载 PDF 文件。可以使用 PDF.js 提供的 `pdfjsLib.getDocument(url)` 方法来异步加载 PDF 文件,并且通过 `Promise` 返回加载状态。 ```javascript var url = 'path/to/pdf/file.pdf'; pdfjsLib.getDocument(url).promise.then(function(pdf) { // PDF 文件加载成功 }); ``` 3. 渲染 PDF 文件。通过 `pdf.getPage(pageNumber)` 方法获取 PDF 页面,然后使用 `page.getTextContent()` 方法获取页面的文本内容。最后通过 `pdfjsLib.renderTextLayer()` 方法渲染文本内容到页面上。 ```javascript pdf.getPage(1).then(function(page) { var viewport = page.getViewport({ scale: 1 }); var textLayer = document.createElement('div'); textLayer.className = 'textLayer'; document.getElementById('pdfContainer').appendChild(textLayer); page.getTextContent().then(function(textContent) { pdfjsLib.renderTextLayer({ textContent: textContent, container: textLayer, viewport: viewport, textDivs: [] }); }); }); ``` 4. 禁止下载和打印。可以使用 CSS 样式来控制 PDF 文件的显示和打印。通过下面的样式可以隐藏 PDF 文件的下载和打印按钮。 ```css .pdfViewer .toolbarButton.download, .pdfViewer .toolbarButton.print { display: none !important; } ``` 提示:为了保证安全性,禁止下载和打印功能是通过前端控制实现的,无法完全阻止用户直接下载或打印 PDF 文件。如果需要更高的安全性,建议在服务器端对 PDF 文件进行加密处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值