word 文档签章控件生成的签章批量删除

某个签章工具的word插件缺少批量插入签章的功能。同时,发现在投标工具中可以使用导出生成pdf时批量签章的功能。现在需要移除先前手动操作生成的多个签章,有如下发现——
1.对少量签章,可以先选中签章右键选择编辑,然后再次选中选择撤销。

2.取消com加载项的DSealObj For Office条目后,使用新建文档,然后插入对象,文件中的文字的功能,可以将签章变成可编辑版的图片。使用vba可批量移除相应的图片。

3.如果使用aopr (Advanced Office Password Recovery) 程序移除文档保护,依旧可以对另存的新文档使用批量删除印章图片宏,但是一旦com加载项再次选中电子签章控件,印章就又显示回来,取消后选择窗格显示灰色不可选对象名(如对象2),同时文档又需要密码才能停止保护,但是aopr未检测到保护。
可用如下代码批量移除印章图片对象

Sub remove_seal_image_and_save_as_new_file()
    dim newfolder 
    For i = ThisDocument.Shapes.Count To 1 Step -1
        If InStr(1, ThisDocument.Shapes(i).Name, "DocEmbSo") > 0 Then
            ThisDocument.Shapes(i).Delete
        End If
    Next i
    ' Save the document under a new path after removing the images
    newfolder = ThisDocument.Path & "\new\"
    If Len(Dir(newfolder, vbDirectory)) = 0 Then MkDir newfolder
    ThisDocument.SaveAs2 FileName:= newfolder & ThisDocument.Name
   
End Sub

右键重命名docx文档为.zip后,解压打开发现settings.xml存在相应的代码
关键代码形如
<w:docVar w:name="DocEmbSDAdfInfo" w:val="9nynnbFRQ2JucXYxQvStXLJ2qx30FNWcJWxhLWzMHs9KBvQraDOObXILEuJ5O1cJ5ZpdRhdiVeh6Pk2xBvXT1z4VK8pfijjKGwW3pWBMhGBoPDIFHOkBTGoqScL7bvvYXcti1jv59bU0Lv9S7blDmw8G9CtoM45tcgsS4nk7Vwnlml1GF2JV6Ho+TbEG9dPXPhUryl+KOMobBbelYEyEYGi+OwA="/><w:docVar w:name="DocEmbSo292BB321" w:val=" "/><w:docVar w:name="DocEmbSo430EF51C" w:val=" "/></w:docVars>

w:name="DocEmbSDAdfInfo"
将w:docVar元素内的内容移除后,替换覆盖回zip文件,重命名docx再次打开,修复则签章消失。

posted @ 2024-09-18 15:52  geyee  阅读(729)  评论(0)    收藏  举报