某个签章工具的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再次打开,修复则签章消失。