javascript - 如何确定PDF是否是加密的javascript客户端

标签 javascript pdf encryption passwords

需要确定用户上传的 pdf 是否在不使用外部库的情况下受密码保护。
到目前为止得到了这个 POC。

有人知道这可能不起作用的情况吗?

<input type='file' onchange='openFile(event)'><br>
<script>
    var openFile = function (event) {

        var input = event.target;

        var reader = new FileReader();
        reader.onload = function (event) {
            console.clear();
            var contents = event.target.result;
            if (contents.indexOf('/Encrypt') !== -1) {
                console.log("Is encrypted");
            } else {
                console.log("Not encrypted");
            }
            console.log("File contents: " + contents);
        };

        reader.onerror = function (event) {
            console.error("File could not be read! Code "  +event.target.error.code);
        };

        reader.readAsText(input.files[0]);

    };
</script>

最佳答案

您可以使用以下代码来查找 PDF 是否已加密

const reader = new FileReader();
reader.readAsArrayBuffer(file);
reader.onload = function () {

var files = new Blob([reader.result], {type: 'application/pdf'});
files.text().then(x=> {
    console.log("isEncrypted", x.includes("Encrypt"))
    console.log("isEncrypted", x.substring(x.lastIndexOf("<<"), x.lastIndexOf(">>")).includes("/Encrypt"));
    console.log(file.name);
});

关于javascript - 如何确定PDF是否是加密的javascript客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52081345/

相关文章:

Java : BOLD with iText in PDF Generation doesn't work correctly

java - 在 iText 中保留嵌入字体

Javascript 重定向与 Pound 在 Wordpress 中不起作用

javascript - 如何在图像上渲染 heatmap.js?

javascript - 调用 onClick 函数并将元素的 data-* 属性中的值传递给它

ssl - 在单声道中,如何控制 SSL/TLS 密码套件?

java - 图像文件的加密与解密

javascript - 手动触发 Karma 重新运行测试

java - 如何更改pdfclown中文本字段的颜色?

MySQL AES 使用默认 key 长度进行加密