Hi, The string you are passing to PdfVecObjects::CreateObject( ) is the name used for the /Type value of the object which is not required here.
I think you code should look more like this:
void PdfImage::SetICCProfile (PdfVecObjects* parent, const PdfName&
rAlternate, char* profileData, long profileSize, long lColorComponents )
{
        PdfObject* iccObject = parent->CreateObject();
iccObject->GetDictionary().AddKey( PdfName("Alternate"), rAlternate );
// The number of color compontens is required. It must be 1,3 or 4 and
// match the color compontens inside the ICC data
   iccObject->GetDictionary().AddKey( PdfName("N"), lColorComponents );
     PdfStream* iccStream = iccObject->GetStream();
        iccStream->Set( profileData, profileSize);
// Now add the colorspace to our image
PdfArray array;
array.push_back( PdfName("ICCBased") );
array.push_back( iccObject->Reference() );
this->GetObject().GetDictionary().AddKey( PdfName("ColorSpace"), array
);
}
The code is totally untested and was just written down from my mind. Important
is that you add the correct number of colorcomponents ("N") to the ICC object
and of course you have to tell the PdfImage some how which colorspace should be
used. Therefore you have to add the ColorSpace key to the image dictionary.
To get the correct number of colorcomponents it might be neccesarry to actually
parse the ICC data but I am not sure about this as I did not yet work with ICC
data.
best regards,
Dom
Am Sunday 16 September 2007 schrieb Jonathan Sibony:
> Thanks for the explanation; I pretty much followed your suggestion (very
> simple).
>
> SetICCProfile is something like this:
>
> void PdfImage::SetICCProfile (PdfVecObjects* parent, const PdfName&
> alternate, char* profileData, long profileSize(
> {
> PdfObject* iccObject =
> parent->CreateObject((alternate.GetName()).c_str());
> PdfStream* iccStream = iccObject->GetStream();
> iccStream->Set( profileData, profileSize);
> {
>
> Where alternate being passed is "ICCBased":
> pImage.SetICCProfile(parent, PdfName("ICCBased"), profileData,
> profileSize);
>
> I see that the object is being added however it doesn't seem to take
> effect (should a profile be attached to an image file, photoshop for
> example would immediately ask whether to use the profile or discard it,
> or even when just inquiring the profile it should return the profile
> instead of the default)
>
> Any clue?
>
> Thanks
> jonathan
>
>
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of Craig
> Ringer
> Sent: Wednesday, September 12, 2007 3:02 PM
> To: Jonathan Sibony
> Cc: [email protected]
> Subject: Re: [Podofo-users] ICC Profile support
>
> ...
> Each PDF document has a single PdfVecObjects instance. You'll need to
> take this as an argument to your `SetICCProfile(...)' or whatever
> method, since the PdfImage doesn't keep track of its owning document. To
> the caller, the interface would thus be something like:
>
> SetICCProfile(PdfVecObjects* parent,
> const PdfName& alternate,
> const char * psProfileBytes,
> long int psProfileLength);
>
> Much of this is probably less than ideal in terms of interface and API.
> Just explaining it has helped me get some ideas about how it could
> perhaps be made easier to understand through documentation and a few
> changes.
>
> --
> Craig Ringer
--
**********************************************************************
Dominik Seichter - [EMAIL PROTECTED]
KRename - http://www.krename.net - Powerful batch renamer for KDE
KBarcode - http://www.kbarcode.net - Barcode and label printing
PoDoFo - http://podofo.sf.net - PDF generation and parsing library
SchafKopf - http://schafkopf.berlios.de - Schafkopf, a card game, for KDE
Alan - http://alan.sf.net - A Turing Machine in Java
**********************************************************************
pgpdNzM3mcWqz.pgp
Description: PGP signature
------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________ Podofo-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/podofo-users
