2012-06-13 386 views
0

我的程序创建adobe ai或(eps)文件,我想将其复制到粘贴板。 我在Adobe Illustrator复制样品AI对象,并通过“纸板检查”检查纸板:如何将eps文件复制到剪贴板/粘贴板?

enter image description here

我的代码以下,但复制没什么纸板:

void copyEPS(CFDataRef data) 
{ 
    OSStatus err = noErr; 
    PasteboardRef theClipboard; 

    err = PasteboardCreate(kPasteboardClipboard, &theClipboard); 
    // err is 0 
    err = PasteboardClear(theClipboard); 
    // err is 0 
    PasteboardSynchronize(theClipboard); 

    err = PasteboardPutItemFlavor(theClipboard, (PasteboardItemID)1, 
     CFSTR("AICB"), data, 0); 
    // err is 0 
    CFRelease(data); 
} 

我该怎么办呢? Thankyou。

回答

0

PasteboardPutItemFlavor()的字符串是一个UTI,所以在这种情况下可能应该设置为CFSTR("com.adobe.encapsulated-postscript")。可可API也可以用于类似的输入。

+0

我用“com.adobe.encapsulated-postscript”和eps数据复制到粘贴板,但InDesign或Illustrator不粘贴它,如果我使用“dyn.ah62d4rv4gk8ycwndkk”作为类型,它粘贴到这两个程序(接受为eps)并且一切正常,你知道如何生成“dyn.ah62d4rv4gk8ycwndkk”字符串吗?我一直使用UTTypeCreatePreferredIdentifierForTag,但我不知道什么通过“inTag”参数来生成“dyn.ah62d4rv4gk8ycwndkk”。谢谢。 –

+0

我相信'UTTypeCreatePreferredIdentifierForTag()'是唯一的方法。在这种情况下,对于前两个参数,“kUTTagClassOSType”和“CFSTR(”AICB“)”看起来很不错。不幸的是,我不知道你是否会得到相同的'dyn。*'字符串;我不知道所有Mac电脑上的字符串是否相同,或者即使在重新启动时计算机上的字符串相同。用作原始字符串可能不可靠。 –

+0

使用kUTTagClassOSType和CFSTR(“AICB”)生成的“dyn.agk8ycwndkk”; –