Skip to content

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

@Horizony14

Description

@Horizony14

在作者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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions