1

我正在尝试获取 InDesign 文件中图形的详细信息。出于技术原因,我使用的是 COM。不是我最喜欢的,因为(在 StackOverflow 的其他地方讨论过)你必须花费一半的时间来铸造。在 Theory (!) 中,下面的代码片段应该可以工作。Intellisense将doc.AllGraphics显示 为返回对象

http://www.indesignscriptingreference.com/CS3/JavaScript/Document.htm上的 CS3 脚本参考将其显示为图形数组

for (int g = 1; g <= doc.AllGraphics.Count; g++) {
  InDesign.Graphic graphic = (InDesign.Graphic) doc.AllGraphics[ g ];
  ....
}

但是,我收到此错误消息:

无法将“System.__ComObject”类型的 COM 对象转换为接口类型“InDesign.Graphic”。此操作失败,因为 IID 为“{6AE52037-9E4E-442D-ADFC-2D492B4BCBEF}”的接口的 COM 组件上的 QueryInterface 调用因以下错误而失败:不支持此类接口(来自 HRESULT 的异常:0x80004002 (E_NOINTERFACE)) .

我尝试使用替代构造返回一个对象,然后将其转换为Indesign.Graphic。所有都失败并出现相同的错误。我不敢相信 Adob​​e 错过了包括这个界面。

关于解决方案的任何建议,以便我可以获得图形内容?

4

2 回答 2

1

我在这里运行 Win7 64 和 CS4 并且也有 E_NOInterface 消息。我花了 6 个小时通过谷歌解决它,尝试和错误。在我通过互联网的路上,我在这里看到了你的帖子,然后回来给你写了对我有帮助的东西。

在安装过程中 Com-Objects 没有正确注册。为了解决这个

  • 转到文件夹

    • 对于 cs3:%ALLUSERSPROFILE%\Adobe\InDesign\Version 5.0\Scripting Support\5.0 在我的情况下:C:\ProgramData\Adobe\InDesignVersion 5.0\Scripting Support\5.0

    • 对于 cs4:%ALLUSERSPROFILE%\Adobe\InDesign\Version 5.0\Scripting Support\6.0

  • 将文件“Resources for Visual Basic.tlb”重命名为“Resources for Visual Basic.tlb.old”

  • 以管理员身份打开命令窗口

  • 在我的情况下,转到 indesign 文件夹C:\Program Files (x86)\Adobe\Adobe InDesign CS4

  • 并通过键入以下命令在命令窗口中启动 indesign:

    indesign.exe -type
    

等待发射,然后你就可以走了。使用此参数注册组件。

我在这里找到了解决方案

于 2010-02-10T01:12:06.567 回答
1

这刚刚发生在我身上,我从谷歌登陆这里!我设法解决了它,所以下次遇到它时会在这里添加解决方案!

只需删除Resources for Visual Basic.tlb可能位于路径中的文件C:\ProgramData\Adobe\InDesign\Version 8.0\en_GB\Scripting Support\8.0并以管理员身份打开 InDesign 并等待它运行。

当我接下来运行它时,我发现 C# 应用程序挂起,所以不得不关闭 InDesign,让 C# 自行打开它!例子:

        Type type = Type.GetTypeFromProgID("InDesign.Application");
        Application app = (Application)Activator.CreateInstance(type);

        var doc = app.Documents.Add();

        for (var i = 0; i < 5; i++)
            doc.Pages.Add(idLocationOptions.idAtBeginning);
于 2016-05-14T16:29:22.233 回答