I think I've just found the answer to the question myself. In the documentation:
There are a couple cases where you may want to record the settings of a print info object. First, you may want to remember the print settings used the last time your application was run. In this case you could record the print info object as an application preference each time the user prints something and then restore the settings when the application launches. However, because the dictionary that stores an NSPrintInfo object's print settings includes non-property list values, it is not a proper property list object. Therefore, it cannot be converted to a plist format and saved directly as a preference value. Instead, you need to use the NSKeyedArchiver (or NSArchiver) class method archivedDataWithRootObject: to encode the NSPrintInfo object as an NSData object, which can be stored in a property list or saved to a file. To restore the NSPrintInfo object, reload the NSData object and then use the NSKeyedUnarchiver (or NSUnarchiver) class method unarchiveObjectWithData: to decode the NSPrintInfo information.