首页 > 解决方案 > 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 对象时,我可以在动态视图中看到一个错误,如下图所示。

VB 代码断点

但是,这似乎并不影响程序的功能。它运行完成并执行我想要的操作:打开 PDF 并显示警报。

任何关于我可能出错的地方的想法将不胜感激。

标签: c#vb.netpdf

解决方案


推荐阅读