无法在客户端验证密码
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."
我正在尝试在我的网页上使用 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."