2015-04-13 9 views
10

Ho costruito Podofo 0.9.3 per iOS insieme a tutte le altre librerie necessarie per supportare amrv7, arm64 e simulatore. Il mio progetto funziona bene, ma il mio problema è il caricamento di un documento per la seconda volta. Ottengo sempre l'errore "Oggetto catalogo non trovato" in Podofo. Se apro il documento utilizzando l'app di anteprima su mac e lo salvo, Podofo può riaprirlo.Podofo per iOS; "Oggetto catalogo non trovato" dopo aver scritto un file PDF

Ecco il codice che sto usando per aprire il documento e salvarlo:

self.doc = new PoDoFo::PdfMemDocument([path UTF8String]); 

NSString *tmpPath = [self createCopyForFile:self.pdfPath]; 

self.doc->Write([tmpPath UTF8String]); 

NSData *myFile = [NSData dataWithContentsOfFile:tmpPath]; 
[myFile writeToFile:tmpPath atomically:YES]; 

NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSError *error; 

if ([fileManager fileExistsAtPath:self.pdfPath] == YES) { 
    [fileManager removeItemAtPath:self.pdfPath error:&error]; 
} 
[fileManager copyItemAtPath:tmpPath toPath:self.pdfPath error:&error]; 

L'errore è qui:

void PdfMemDocument::InitFromParser(PdfParser* pParser) 
{ 
... 
PdfObject* pCatalog = pTrailer->GetIndirectKey("Root"); 
if(!pCatalog) 
{ 
     PODOFO_RAISE_ERROR_INFO(ePdfError_NoObject, "Catalog object not found!"); 
... 
} 

Avete ragazzi costruito Podofo per iOS ultimamente? Qualche idea sul perché sta succedendo?

+0

puoi dare un esempio del valore della variabile del tuo percorso? –

risposta

2

Ho affrontato un problema simile. Il problema era con il percorso a NSCachesDirectory. Cambia con ogni esecuzione dell'applicazione nel simulatore. Per risolvere questo problema ho salvato percorso al mio file senza percorso della directory cache:

- (NSString *)filePathWithoutCacheDirectoryComponent:(NSString *)fullPath { 
    NSString *cacheDirectoryPath = 
     NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0]; 
    return [fullPath stringByReplacingOccurrencesOfString:cacheDirectoryPath withString:@""]; 
} 

Per aprire il mio file prossima volta ho aggiunto il percorso della directory cache al suo percorso salvato:

NSString *cacheDirectoryPath = 
     NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0]; 
fullPath = [cacheDirectoryPath stringByAppendingPathComponent:savedPathToFile]; 

Quindi, se si salva il file in NSCachesDirectory o NSDocumentDirectory provare questo.

+0

Grazie per la risposta! Sto ottenendo l'errore nella stessa esecuzione. Ho controllato i percorsi e sono uguali. Inoltre, l'utilizzo di una vecchia libreria Podofo non causa questo problema, ma il problema è che ho ricostruito la libreria per arm64. – Basel

Problemi correlati