无法在客户端验证密码

问题描述

我正在尝试在网页上使用pdf.js,在将其上传到服务器之前,我需要验证PDF用户输入的密码是否正确。

但是我无法使其工作。

我使用CDN托管的pdf.min.js

<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.6.347/pdf.min.js" integrity="sha512-Z8CqofpIcnJN80feS2uccz+pXWgZzeKxDsDNMD/dJ6997/LSRY+W4NmEt9acwR+Gt9OHN0kkI1CTianCwoqcjQ==" crossorigin="anonymous"></script>

这是密码检查功能:

function checkPass() {
pdfjsLib.getDocument({
        url: 'pdf.pdf',password: '01010101'
    }).promise.then(function (pdf) {
        input.classList.add("rightpass");
    }).catch(function (error) {
        input.classList.add("wrongpass");
        console.log(error);
    });
} 

并在控制台日志中记录Deprecated API usage: No "GlobalWorkerOptions.workerSrc" specified.

我尝试通过pdfjsLib.disableWorker = true;禁用它,但是它不起作用。

我只需要验证密码即可,无需验证。

解决方法

这是一个工作代码示例:

<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.6.347/pdf.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.6.347/pdf.worker.min.js"></script>
<script>
    const pdfName = "empty-protected.pdf";
    async function loaded()
    {
        const loadingTask = pdfjsLib.getDocument({ url: pdfName,password: "qwerty" });
        loadingTask.promise.then(() => console.log(1,"OK"),(ex) => console.log(1,ex));
        
        const loadingTask2 = pdfjsLib.getDocument({ url: pdfName,password: "" });
        loadingTask2.promise.then(() => console.log(2,(ex) => console.log(2,ex));
    }
</script>
</head>
<body onload="javascript:loaded();">
</body>
</html>

这是我用于实验的受密码保护的pdf文件(密码为qwerty

https://mega.nz/file/lJg2GKgS#AdVJ0DZ1OfsGrlSqM67dfr_r2n8lBiiOm9q0o4wt7e4

倾斜pdf.worker.min.js将警告"Warning: Deprecated API usage: No "GlobalWorkerOptions.workerSrc" specified."更改为"Warning: Setting up fake worker."

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...