How to convert rgb image to cmyk?
I tried 2 methods, none of them worked.
1:
- AVDoc avDoc = AVAppGetActiveDoc();
- PDDoc pdDoc = AVDocGetPDDoc(avDoc);
- PDColorConvertParams colorParams = (PDColorConvertParams) calloc( 1 , sizeof(PDColorConvertParamsRec) );
- PDColorConvertAction colorConvertAction = (PDColorConvertAction) calloc( 1 , sizeof( PDColorConvertActionRec ) );
- ASBool pageChanged = false;
- AC_Profile workingProfile;
- ACGetWorkingSpaceProfile (kACWorkingCMYK, &workingProfile);
- //Populate the PDColorConvertAction data members
- colorConvertAction[0].mMatchAttributesAny = -1;//kColorConvObj_AnyObject;
- colorConvertAction[0].mMatchSpaceTypeAny = -1;//kColorConvAnySpace;
- colorConvertAction[0].mMatchIntent= AC_UseProfileIntent;
- colorConvertAction[0].mConvertIntent = AC_UseProfileIntent;
- colorConvertAction[0].mConvertProfile= workingProfile;
- colorConvertAction[0].mEmbed = true;
- colorConvertAction[0].mPreserveBlack = true;
- colorConvertAction[0].mUseBlackPointCompensation= true;
- colorConvertAction[0].mAction = kColorConvConvert;
- colorConvertAction[0].mIsProcessColor = false;
- colorParams->mActions = colorConvertAction;
- colorParams->mNumActions = 1;
- colorParams->mInks = NULL;
- colorParams->mNumInks = 0;
- pageChanged = false;
- PDDocColorConvertPage( pdDoc , colorParams , 0 , NULL , NULL , 0 , NULL , &pageChanged );
2:
- AVDoc avDoc = AVAppGetActiveDoc();
- PDDoc pdDoc = AVDocGetPDDoc(avDoc);
- int pageCount = PDDocGetNumPages(pdDoc);
- for(int i=0;i<pageCount;i++)
- {
- PDPage page = PDDocAcquirePage(pdDoc, i);
- PDEContent pdeContent = PDPageAcquirePDEContent(page, gExtensionID);
- ASInt32 elementCount = PDEContentGetNumElems(pdeContent);
- for(int j=0;j<elementCount;j++)
- {
- PDEElement e = PDEContentGetElem(pdeContent, j);
- ASInt32 t = PDEObjectGetType(e);
- if(t == kPDEImage)
- {
- PDEImage pdeImage = (PDEImage)element;
- PDEColorSpace space = PDEImageGetColorSpace(pdeImage);
- ASAtom spaceName = PDEColorSpaceGetName(space);
- if(std::string(ASSAtomGetString(spaceName)) == "DeviceCMYK")
- {
- PDEColorSpace cmyk = PDEColorSpaceCreateFromName(ASAtomFromString("DeviceCMYK"));
- PDEImageSetColorSpace(pdeImage, cmyk);
- }
- }
- }
- PDPageSetPDEContent(page, gExtensionID);
- PDPageNotifyContentsDidChange(page);
- PDPageReleasePDEContent(page, gExtensionID);
- PDPageRelease(page)
- }
