Hi, I am looking for a way to read the information of the ICC profile of an embedded Adobe Illustrator file (.ai) with an external application. I can save with PDF compatibility which returns an ICC profile for each object separately. But imagine you had a blank document, assigned with e.g. a CMYK profile (ISOcoated.icc), no objects in the documents at all, then save .ai with PDF compatbility. Obviously there‘s no content, yet the file size is approx. the size of the embedded ICC profile. The PDF parser returns no ICC profile as no object is present. Is there a way to access .ai native content to get/read the embedded ICC profile externally? Thanks
Sorry, I meant to say:
"...I am looking for a way to read the information of the embedded ICC profile of an Adobe Illustrator file (.ai)..."
Copy link to clipboard
The real AI document is stored in proprietary format inside private objects of the PDF. The general PDF contents are an exported visual representation only.
Is there any procedure or description in e.g. the SDK that allows to access the proprietary format of the .ai file, specifically the name of the embedded ICC profile, then?
"Proprietary" is generally taken to mean "secret and undocumented". However, I don't know what information you might find in the Illustrator SDK.
The information seems to be stored in a PieceInfo dictionary, you might find something there but remember it can change without notice between releases (a reason it's kept proprietary). But preflighting proprietary file formats is a common wish, and some companies spend their working lives picking over the bytes and bits to try and guess what the files mean.
Thanks, surely understood. If it's proprietary, undocumented and kept secret for any particular reason then one can only try to figure it out backwards. PS: I've found the ICC profile descriptor in Resources/XObject(Form)/... of an .ai file but that funnily only shows up if the .ai file has been saved without PDF compatibility. Will investigate a bit more and probably also will have a look at the Illu SDK. Thanks anyway!
Commentary, which probably doesn't help you a bit but may give insight into the problem.
"proprietary, undocumented and kept secret for any particular reason"
Well, companies know that what you put in a file isn't actually secret, but here are some reasons why they don't document it, making a de facto secret.
- it might use other information or systems that are licensed and to which the company cannot share the rights
- you have to pay someone to document it, in a form suitable for the public
- you have to assign time in all future projects to keep the public documentaton up to date
- an infrastructure could build up of other apps that use this information (like yours), and hence customers and even non-customers who are inconvenienced, upset or (even, potentially) litigious every time you make changes.
- reducing the chance to make changes may lock apps into a data model that is out of date and less efficient or effective than their rivals.
- it gives other companies the info they need to easily put code to import of the company's files into THEIR software, making business rivals stronger.
Sometimes Adobe have chosen the path that says sharing and widespread acceptance is the route to success, as in PostScript and PDF.