Skip to content

部分文件无法打开(签章部分报错)的问题与解决方案 #11

@Hhzyouth

Description

@Hhzyouth

在作者demo中打开部分OFD文件(带签章)时,出现白屏无法打开的情况,控制台中有如下报错

Image

经过断点调试后发现,由于index-Bnhl8MCu.js文件中给C6变量赋值的方法中变量c的值是像SignedValue.dat这样的文件名,但在字典e.fileskey中是像Doc_0/Signs/Sign_0/SignedValue.dat这样带路径样式的文件名,所以let l = await e.files[c].async("base64")无法找到对应的文件。
针对我的OFD文件我对代码做了如下修改

C6 = async (e, t, i, r) => {
    if (t && t.length > 0)
        for (let n = 0; n < t.length; n++) {
            let s = t[n]
              , o = Oe(s, Te.StampAnnot)
              , c = Oe(s, Te.SignedValue).value;
            c = dn(c);
            c = s.fileName.substring(0, s.fileName.lastIndexOf("/")) + "/" + c; //添加部分,为文件名拼接上前面的路径
            let l = await e.files[c].async("base64")
              , u = await Pp(l);
            if (u && u.type === "ofd")
                await A6(u, s);
            else if (u && u.type === "png") {
                let f = "data:image/png;base64," + btoa(String.fromCharCode.apply(null, u.ofdArray));
                s.sealData = f
            }
            s.sealObject = u;
            for (let f = 0; f < o.children.length; f++) {
                let d = o.children[f]
                  , h = Ee(d, Ie.PageRef);
                console.log("get pagerefid", h, i),
                h === i && r.signList.push(s)
            }
        }
}

修改后OFD文件能正常打开,但测试文件有限,不能保证对所有OFD文件有用,希望作者大大看到后能修复问题

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions