2015-04-13 23 views
10

iOS için Podofo 0.9.3'ü, amrv7, arm64 ve simulatörü desteklemek için gereken diğer tüm kütüphanelerle birlikte oluşturdum. Projem iyi çalışıyor, ancak benim sorunum ikinci kez bir belge yüklemektir. Her zaman "Katalog nesnesi bulunamadı" hatasını Podofo'da alıyorum. Mac'te Önizleme uygulamasını kullanarak belgeyi açar ve kaydederse, Podofo tekrar açabilir.Podofo; Bir PDF dosyası yazdıktan sonra "Katalog nesnesi bulunamadı"

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]; 

hata burada edilmektedir:

İşte bunu belgeyi açmak ve kaydetmek için kullanıyorum kodu

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

siz son zamanlarda iOS için Podofo inşa ettiniz? Bir fikrim, bu neden oluyor?

+0

Yol değişkeninizin değerine bir örnek verebilir misiniz? –

cevap

2

Benzer sorunlarla karşılaştım. Sorun, NSCachesDirectory yolundaydı. Simülatördeki her uygulamada değişir. önbelleğe dizinine yol olmadan benim dosyasının yolunu kurtardı Bu sorunu gidermek için:

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

dosyamı açmak için onun kaydedilmiş yoluna önbelleğe dizin yolunu eklendi dahaki sefere: Yani kaydederseniz

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

dosyanızı NSCachesDirectory veya NSDocumentDirectory deneyin.

+0

Cevabınız için teşekkür ederiz! Hatayı aynı şekilde alıyorum. Yolları kontrol ettim ve hepsi aynı. Ayrıca, eski bir Podofo kütüphanesi kullanmak bu sorunu tetiklemiyor, ancak sorun kol kütüphanesini yeniden inşa ettiğimdi. – Basel

İlgili konular