NSPrintInfo localizedPaperName, how to get paper name in ios?

393 Views Asked by At

On my mac I use NSPrintInfo and [NSPrintInfo localizedPaperName] to determine if the default paper size is "US Letter" or "A4".

NSPrintInfo * printInfo = [NSPrintInfo sharedPrintInfo]; [printInfo localizedPaperName]

How can I get the iOS device to tell me if the default paper size is "US Letter" or "A4"?

2

There are 2 best solutions below

0
On BEST ANSWER

Since nobody has suggested a better way, I looked up in which countries US letter is used and started checking against this list, by getting the NSLocaleCountryCode

 [[[NSLocale currentLocale] objectForKey:NSLocaleCountryCode] isEqualToString:@"US"]||
        [[[NSLocale currentLocale] objectForKey:NSLocaleCountryCode] isEqualToString:@"CA"]||
        [[[NSLocale currentLocale] objectForKey:NSLocaleCountryCode] isEqualToString:@"MX"]||
        [[[NSLocale currentLocale] objectForKey:NSLocaleCountryCode] isEqualToString:@"CU"]||
        [[[NSLocale currentLocale] objectForKey:NSLocaleCountryCode] isEqualToString:@"DO"]||
        [[[NSLocale currentLocale] objectForKey:NSLocaleCountryCode] isEqualToString:@"GT"]||
        [[[NSLocale currentLocale] objectForKey:NSLocaleCountryCode] isEqualToString:@"CR"]||
        [[[NSLocale currentLocale] objectForKey:NSLocaleCountryCode] isEqualToString:@"SV"]||
        [[[NSLocale currentLocale] objectForKey:NSLocaleCountryCode] isEqualToString:@"HN"]||
        [[[NSLocale currentLocale] objectForKey:NSLocaleCountryCode] isEqualToString:@"BO"]||
        [[[NSLocale currentLocale] objectForKey:NSLocaleCountryCode] isEqualToString:@"CO"]||
        [[[NSLocale currentLocale] objectForKey:NSLocaleCountryCode] isEqualToString:@"VE"]||
        [[[NSLocale currentLocale] objectForKey:NSLocaleCountryCode] isEqualToString:@"PH"]||
        [[[NSLocale currentLocale] objectForKey:NSLocaleCountryCode] isEqualToString:@"CL"]
0
On

I used a similar fixed list approach like @spacecash21 suggested, based on this map: https://en.wikipedia.org/wiki/Paper_size#/media/File:Prevalent_default_paper_size.svg

+ (NSString*)defaultPaperName
{
    // as it looks mostly US and Canada and the Philippines are actually using the US Letter format, usage of the metric system is no clue
    // https://en.wikipedia.org/wiki/Paper_size#/media/File:Prevalent_default_paper_size.svg
    static NSSet* letterCountries;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        letterCountries = [NSSet setWithArray:@[@"US", @"CA", @"MX", @"CU", @"DO", @"GT", @"CR", @"SV", @"HN", @"BO", @"CO", @"VE", @"PH", @"CL"]];
    });

    NSString* countryCode = NSLocale.currentLocale.countryCode;
    if ([letterCountries containsObject:countryCode.uppercaseString])
        return @"na-letter";

    return @"iso-a4";
}