2012-06-13 12 views
0

내 프로그램에서 adobe ai 또는 (eps) 파일을 만들고이 파일을 대지로 복사하려고합니다. 나는 어도비 일러스트 레이터에서 샘플 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); 
} 

내가 그것을 어떻게 할 수 있습니까? 감사합니다.

답변

0

PasteboardPutItemFlavor()의 유형 문자열은 UTI이므로 여기서는 CFSTR("com.adobe.encapsulated-postscript")으로 설정해야합니다. 코코아 API는 비슷한 입력과 함께 사용할 수도 있습니다.

+0

"com.adobe.encapsulated-postscript"를 사용했으며 붙여 넣기에 복사 된 eps 데이터가 있지만 InDesign이나 Illustrator에서는 붙여 넣기를하지 않습니다. "dyn.ah62d4rv4gk8ycwndkk"을 유형으로 사용하면 해당 프로그램 (eps로 허용) 모든 것이 좋습니다. "dyn.ah62d4rv4gk8ycwndkk"문자열을 어떻게 생성 할 수 있는지 알고 있습니까? 나는 UTTypeCreatePreferredIdentifierForTag에 사용되었지만, "dyn.ah62d4rv4gk8ycwndkk"을 생성하기 위해 "inTag"param에 전달하는 것이 무엇인지 알지 못합니다. 감사. –

+0

나는 UTTypeCreatePreferredIdentifierForTag()만이 유일한 방법이라고 믿는다. 이 경우'kUTTagClassOSType'과'CFSTR ("AICB")는 처음 두 매개 변수에 대해 좋은 값처럼 보입니다. 불행히도 나는'dyn. *'문자열을 얻을 수 있을지 모르겠다. 문자열이 모든 Mac 컴퓨터에서 동일하거나 컴퓨터가 재부팅되는 경우에도 동일한 지 여부는 알 수 없습니다. 원시 문자열로 사용하는 것은 아마도 신뢰할 수 없습니다. –

+0

kUTTagClassOSType 및 CFSTR ("AICB")로 생성 된 "dyn.agk8ycwndkk"; –