c# - PowerPDF API - 将 VB 代码转换为 C# - 错误 HRESULT E_FAIL
问题描述
我正在尝试将以下 VB 代码转换为 C#。代码在 VB 中运行时不会中断,但会在 C# 中指示的行上中断。代码很简单。它使用名为 PowerPDF 的程序打开 PDF 文档,然后使用 javascript 显示警报。
VB 代码 - 这运行没有错误
Sub Main()
Dim dvOpenDoc = CreateObject("PowerPDF.DVDoc")
dvOpenDoc.Open("C:\TestFiles\SampleFormSource.pdf")
Dim ddDoc = dvOpenDoc.GetDDDoc()
Dim jso = ddDoc.GetJSObject
jso.app.alert("Show this alert")
End Sub
C# 代码 - 这在指示的行中断
static void Main(string[] args)
{
Type GetPDFType = Type.GetTypeFromProgID("PowerPDF.DVDoc");
dynamic dvOpenDoc = Activator.CreateInstance(GetPDFType);
dvOpenDoc.Open(@"C:\TestFiles\SampleFormSource.pdf");
var ddDoc = dvOpenDoc.GetDDDoc();
dynamic jso = ddDoc.GetJSObject();
//I have also tried these
//var jso = ddDoc.GetJSObject;
//dynamic jso = ddDoc.GetJSObject;
//var jso = ddDoc.GetJSObject();
//The program always breaks on the following line.
//Error HRESULT E_FAIL has been returned from a call to a COM component.
jso.app.alert("Show this alert");
Console.ReadLine();
}
我尝试使用 VS 2017 在两台不同的开发机器上运行这两个片段,结果相同:C# 失败,VB 工作。两者都是 .Net Framework 4.6.1。
我确实注意到在 VB 版本(运行没有任何问题的版本)中,当我插入断点并检查 jso 对象时,我可以在动态视图中看到一个错误,如下图所示。
但是,这似乎并不影响程序的功能。它运行完成并执行我想要的操作:打开 PDF 并显示警报。
任何关于我可能出错的地方的想法将不胜感激。