2015-03-17 2 views
1

Я скомпилировал GDAL 1.11.0 для iOS. Я могу перечислить все драйверы, но если я открою известный PDF с возможностью геодезирования, я получу ошибку 4 ... не признанный в качестве поддерживаемого формата файла. Я пытаюсь разработать приложение сопоставления, используя файлы geoPDF. Вот мой код;PDF с использованием iOS и GDAL

-(void)gdalTests 
{ 
    NSLog(@"GDAL Testing"); 

    GDALAllRegister(); 

    int a = GDALGetDriverCount(); 

    for (int b=1; b<a; b++) { 

     NSLog(@"GDAL Driver (%d) %s",b,GDALGetDriverLongName(GDALGetDriver(b))); 
     if (b==95) { 
      GDALDriverH drv = GDALGetDriver(b); 
      GDALRegisterDriver(drv); 
      NSLog(@"PDF DRIVER REGISTERED"); 
     } 
    } 

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"9030-4N KURRAJONG" ofType:@"pdf"]; 
    GDALDatasetH dataset = GDALOpen ([filePath cStringUsingEncoding:[NSString defaultCStringEncoding]], GA_ReadOnly); 

} 

Вот часть вывода с ошибкой.

2015-03-17 16:52:05.800 pdfTest[46322:4110504] GDAL Driver (94) HF2/HFZ heightfield raster 
2015-03-17 16:52:05.800 pdfTest[46322:4110504] GDAL Driver (95) Geospatial PDF 
2015-03-17 16:52:05.800 pdfTest[46322:4110504] PDF DRIVER REGISTERED 
2015-03-17 16:52:05.800 pdfTest[46322:4110504] GDAL Driver (96) OziExplorer Image File 
2015-03-17 16:52:05.800 pdfTest[46322:4110504] GDAL Driver (97) USGS LULC Composite Theme Grid 
2015-03-17 16:52:05.801 pdfTest[46322:4110504] GDAL Driver (98) Arc/Info Export E00 GRID 
2015-03-17 16:52:05.801 pdfTest[46322:4110504] GDAL Driver (99) ZMap Plus Grid 
2015-03-17 16:52:05.801 pdfTest[46322:4110504] GDAL Driver (100) NOAA NGS Geoid Height Grids 
2015-03-17 16:52:05.801 pdfTest[46322:4110504] GDAL Driver (101) MBTiles 
2015-03-17 16:52:05.801 pdfTest[46322:4110504] GDAL Driver (102) IRIS data (.PPI, .CAPPi etc) 
ERROR 4: `/Users/michealcumming/Library/Developer/CoreSimulator/Devices/83827FA6-0626-4A6F-8A43-516AD495430B/data/Containers/Bundle/Application/4249E572-0813-4C79-87BF-B1406E139552/pdfTest.app/9030-4N KURRAJONG.pdf' not recognised as a supported file format. 
+0

Вы когда-нибудь это выясняли? Попытка сделать что-то подобное. – skwashua

+0

Нет, извините, я не смог взломать его напрямую с помощью библиотеки GDAL. Я использовал https://github.com/yllan/YLPDFKit. Я отправлю код, который я использовал с этим. – Micheal

ответ

1

Я решил эту проблему с помощью https://github.com/yllan/YLPDFKit Ниже приведен код, который используется для доступа к данным документа. Я надеюсь, это поможет вам.

NSString *documentName = @"9030-4N KURRAJONG"; 
NSString *filePath = [[NSBundle mainBundle]pathForResource:documentName ofType:@"pdf"]; 
NSURL *documentUrl = [NSURL fileURLWithPath:filePath]; 

CGPDFDocumentRef document = CGPDFDocumentCreateWithURL((CFURLRef)documentUrl); 

CGPDFStringRef string; 
CGPDFDictionaryRef infoDict; 

infoDict = CGPDFDocumentGetInfo(document); 
NSDictionary *d = YLGetDictionaryFromCGPDFDictionary(infoDict); 
NSLog(@"DOCUMENT INFO %@",d); 

CGPDFPageRef page = CGPDFDocumentGetPage(document, 1); 
NSLog(@"#rekt: %@",NSStringFromCGRect(CGPDFPageGetBoxRect(page, kCGPDFMediaBox))); 

CGPDFDictionaryRef firstPage = CGPDFPageGetDictionary(page); 

d = YLGetDictionaryFromCGPDFDictionary(firstPage); 

NSArray *viewPortArray = [d objectForKey:@"VP"]; 
for (NSDictionary *d in viewPortArray) { 

    NSString *name = [d objectForKey:@"Name"]; 
    NSLog(@"---- %@",name); 
    NSLog(@"%@",d); 
} 

for (int x = 0; x<5; x++) { 

    CGRect box = CGPDFPageGetBoxRect(page, x); 
    NSLog(@"PDF BOX %d = %0.4f %0.4f %0.4f %0.4f",x,box.origin.x,box.origin.y,box.size.width,box.size.height); 
} 
+0

Очень полезно! Я попробую это сегодня вечером. Можете ли вы получить доступ к геоданным? – skwashua