无法在客户端验证密码

Can't verify password on client side

我正在尝试在我的网页上使用 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, "OK"), (ex) => console.log(2, ex));
    }
</script>
</head>
<body onload="javascript:loaded();">
</body>
</html>

这里是我用于实验的password-protectedpdf文件(密码是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."