【问题标题】:How can I copy an eps file to clipboard/pasteboard?如何将 eps 文件复制到剪贴板/粘贴板?
【发布时间】:2012-06-13 14:43:53
【问题描述】:

我的程序创建 adobe ai 或 (eps) 文件,我想将其复制到粘贴板。 我在 adobe illustrator 中复制了示例 ai 对象,并通过“粘贴板检查器”检查粘贴板:

我的代码在下面,但没有复制到粘贴板:

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);
}

我该怎么做? 谢谢。

【问题讨论】:

    标签: macos cocoa macos-carbon eps pasteboard


    【解决方案1】:

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

    【讨论】:

    • 我使用“com.adobe.encapsulated-postscript”和 eps 数据复制到粘贴板但 InDesign 或 Illustrator 不粘贴它,如果我使用“dyn.ah62d4rv4gk8ycwndkk”作为类型,它粘贴到这两个程序(接受为 eps)一切正常,你知道如何生成“dyn.ah62d4rv4gk8ycwndkk”字符串吗?我一直使用 UTTypeCreatePreferredIdentifierForTag,但我不知道传递给“inTag”参数以生成“dyn.ah62d4rv4gk8ycwndkk”。谢谢。
    • 我相信UTTypeCreatePreferredIdentifierForTag() 是唯一的方法。在这种情况下,kUTTagClassOSTypeCFSTR("AICB") 对于前两个参数来说似乎是不错的值。不幸的是,我不知道你是否会得到相同的dyn.* 字符串;我不知道所有 Mac 计算机上的字符串是否相同,或者即使重新启动后计算机上的字符串是否相同。用作原始字符串可能不可靠。
    • 使用 kUTTagClassOSType 和 CFSTR("AICB") 生成的“dyn.agk8ycwndkk”;
    猜你喜欢
    • 2017-10-14
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    相关资源
    最近更新 更多