#include <CoreFoundation/CoreFoundation.h> #include <CoreServices/CoreServices.h> #include <Foundation/Foundation.h> /* ----------------------------------------------------------------------------- Step 1 Set the UTI types the importer supports Modify the CFBundleDocumentTypes entry in Info.plist to contain an array of Uniform Type Identifiers (UTI) for the LSItemContentTypes that your importer can handle ----------------------------------------------------------------------------- */ /* ----------------------------------------------------------------------------- Step 2 Implement the GetMetadataForFile function Implement the GetMetadataForFile function below to scrape the relevant metadata from your document and return it as a CFDictionary using standard keys (defined in MDItem.h) whenever possible. ----------------------------------------------------------------------------- */ /* ----------------------------------------------------------------------------- Step 3 (optional) If you have defined new attributes, update the schema.xml file Edit the schema.xml file to include the metadata keys that your importer returns. Add them to the <allattrs> and <displayattrs> elements. Add any custom types that your importer requires to the <attributes> element <attribute name="com_mycompany_metadatakey" type="CFString" multivalued="true"/> ----------------------------------------------------------------------------- */ /* ----------------------------------------------------------------------------- Get metadata attributes from file This function's job is to extract useful information your file format supports and return it as a dictionary ----------------------------------------------------------------------------- */ Boolean GetMetadataForFile(void* thisInterface, CFMutableDictionaryRef attributes, CFStringRef contentTypeUTI, CFStringRef pathToFile) { /* Pull any available metadata from the file at the specified path */ /* Return the attribute keys and attribute values in the dict */ /* Return TRUE if successful, FALSE if there was no data provided */ Boolean success=NO; NSString *theContent; NSAutoreleasePool *pool; // Don't assume that there is an autorelease pool around the calling of this function. pool = [[NSAutoreleasePool alloc] init]; // load the document at the specified location theContent=[[NSString alloc] initWithContentsOfFile:(NSString *)pathToFile //usedEncoding:(NSStringEncoding *)NULL encoding:NSUTF8StringEncoding error:(NSError **)NULL]; if (theContent) { [(NSMutableDictionary *)attributes setObject:theContent forKey:(NSString *)kMDItemTextContent]; // return YES so that the attributes are imported success=YES; // release the loaded document [theContent release]; } [pool release]; return success; }