1

我在关闭 Acrobat 时遇到问题。我正在使用 vb.net 在运行 Acrobat 时签署 PDF 文件。完成后,我关闭 Acrobat 并尝试删除当前签名的 PDF 文件,但我收到一条错误消息,告诉我该文件正在被另一个进程使用。我尝试关闭并设置为 Nothing AcroApp、AcroAVDoc、AcroPDDoc JSO,但这仍然不起作用。我尝试用 Marshal.ReleaseComObject(...) 释放它们仍然没有效果。

        acroPDDoc.Close()
        acrobatAVDoc.Close(False)
        acrobatApp.Exit()

        Try
            Marshal.ReleaseComObject(javaScriptObj)
        Catch ex As Exception
        End Try

        Try
            Marshal.ReleaseComObject(acroPDDoc)
        Catch ex As Exception
        End Try

        Try
            Marshal.ReleaseComObject(acrobatAVDoc)
        Catch ex As Exception
        End Try

        Try
            Marshal.ReleaseComObject(acrobatApp)
        Catch ex As Exception
        End Try

        javaScriptObj = Nothing
        acroPDDoc = Nothing
        acrobatAVDoc = Nothing
        acrobatApp = Nothing

我不想使用下面的替代方法,因为它会杀死所有我不想要的打开的 PDF 文档。

'Gets All Acrobat Processes
Dim tProcess() As Process = System.Diagnostics.Process.GetProcessesByName("Acrobat")

'Kills Each Acrobat Process
For Each AcrobatProcess As Process In tProcess
    AcrobatProcess.Kill()
Next

请帮我找到解决这个问题的方法。谢谢

4

2 回答 2

2

我想出了一个类似的解决方案。您可以查看我的示例(下面的链接),它可能会对您的情况有所帮助。记录所有打开的 acrobat 文档,然后杀死并重新打开它们。然后,用户可以手动关闭每个文档,而 Acrobat 不会挂起。它可能不是最好的解决方案,但它是一个可行的解决方案。

VB.Net / Acrobat - 用户手动退出程序后 Acrobat 挂起

于 2012-06-05T16:48:46.610 回答
0

确认所有对象都已释放。我在使用 C# 编写的实用程序中遇到了同样的问题,该实用程序使用该方法合并 pdf并通过界面PDDoc InsertPages添加书签。JSObject

我发现一旦我释放了存储我的对象bookmarkRoot,Acrobat.exe 进程将在最后一个对象被释放后释放。我不必终止该进程。

于 2012-07-03T16:36:08.670 回答