我正在处理带有密码保护的 PDF 文件的上传。我不想将带有密码的受密码保护的文件发送到最终可以解密文件的后端,而是想删除前端中的密码,然后将解锁的 pdf 作为 blob 发送到后端。
有一些工具可以从 pdf 中删除密码,即 node-qpdf2 和 ghostscript-node,但是 我明确地寻找一种轻量级方法,而不依赖于像上面提到的那样依赖大量的工具。
上传受密码保护的 PDF 文件时,会要求用户提供正确的密码。
我在前端使用 next.js 并使用 pdfjs-dist 作为密码提示。
有什么方法可以用来解密前端受保护的文件吗?可以用pdjsLib解密吗?
谢谢。
pdfjsLib.GlobalWorkerOptions.workerSrc = 'pdf.worker.js';
const fileURL = URL.createObjectURL(file);
const loadingTask = pdfjsLib.getDocument(fileURL);
loadingTask.onPassword = function(updatePassword:Function , reason:any) {
switch (reason) {
case pdfjsLib.PasswordResponses.NEED_PASSWORD: {
const password = prompt('Enter the password to open this PDF file.');
setpdfPassword(password)
updatePassword(password);
break;
}
case pdfjsLib.PasswordResponses.INCORRECT_PASSWORD: {
const password = prompt('Invalid password. Please try again.');
setpdfPassword(password)
updatePassword(password);
break;
}
}
};
loadingTask.promise.then(function(pdfDocument) {
console.log(pdfDocument)
// PDFDocumentProxy
// _pdfInfo:
// {numPages: 1, fingerprints: Array(2)}
// _transport: WorkerTransport
// commonObjs: PDFObjects {#ensureObj: ƒ, #objs: {…}}
// destroyCapability: null
});
您可以使用
fromMemory
,然后使用 decryptPdf
或 decryptPdfOwner
,然后使用 https://www.npmjs.com/package/coherentpdf中的
toMemory
客户端 JS 大约为 1.3Mb,如果使用 gzip 压缩,则更少。
同样,如果您的服务器代码也是用 JS 编写的,那么同一个库也可以在服务器端执行此操作。
当您想避免严重依赖工具时,删除受密码保护的密码可能很困难。要轻松删除前端密码,您可以尝试这个osttopstapp PDF Unlocker 软件。该工具可帮助您打开受密码保护的 PDF 文件并删除密码,无需任何繁琐的过程。该工具用户友好,非常易于使用,并且不需要任何技术专业知识即可设置。该工具允许用户一次解锁多个 PDF 文件,从而提高 PDF 解锁的速度。只需点击几下即可轻松访问 PDF 文件。这样,您就可以安全、简单地管理文档,而无需过多的依赖。用户可以在系统上设置这个轻量级工具并使用它。它不会减慢系统速度。