我试图在InDesign文件中获取图形的详细信息。出于技术原因,我使用COM。不是我最喜欢的,(在StackOverflow的其他地方讨论过)你得花上一半的时间去做演员。在理论上(!),下面的代码片段应该可以工作。Intellisense将doc.AllGraphics显示为返回对象。
CS3脚本引用在http://www.indesignscriptingreference.com/CS3/JavaScript/Document.htm上显示为图形的数组
for (int g = 1; g <= doc.AllGraphics.Count; g++) {
InDesign.Graphic graphic = (InDesign.Graphic) doc.AllGraphics[ g ];
....
}但是,我收到以下错误消息:
无法将'System.__ComObject‘类型的COM对象转换为接口类型’Insign.Grapchi‘。此操作失败,因为对IID '{6AE52037-9E4E-442D-ADFC-2D492B4BCBEF}‘接口的COM组件的QueryInterface调用失败:不支持此类接口( HRESULT: 0x80004002 (E_NOINTERFACE)例外)。
我尝试过使用替代构造来返回对象,然后将其转换为Indesign.Graphic.所有的失败都有相同的错误。我不敢相信Adobe错过了这个界面。
对于解决方案有什么建议吗?这样我就可以得到图形内容了?
发布于 2010-02-10 01:12:06
我在这里运行Win7 64和CS4,并收到了E_NOInterface消息。我花了6个小时通过谷歌解决它,尝试和错误。在我通过互联网的路上,我看到了你在这里的帖子,然后回来给你写信,这对我有帮助。
在安装期间,Com-对象没有正确注册。解决这个问题
- for cs3: `%ALLUSERSPROFILE%\Adobe\InDesign\Version 5.0\Scripting Support\5.0` in my case: `C:\ProgramData\Adobe\InDesignVersion 5.0\Scripting Support\5.0`
- for cs4: `%ALLUSERSPROFILE%\Adobe\InDesign\Version 5.0\Scripting Support\6.0`
C:\Program Files (x86)\Adobe\Adobe InDesign CS4等着发射,然后你就可以出发了。使用此参数,它将注册组件。
我找到了解决方案这里
发布于 2016-05-14 16:29:22
这件事刚刚发生在我身上,我是从谷歌来到这里的!我设法解决它,所以将添加解决方案,为下次我遇到它!
简单地,删除可能位于C:\ProgramData\Adobe\InDesign\Version 8.0\en_GB\Scripting Support\8.0路径上的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);https://stackoverflow.com/questions/2134119
复制相似问题