Podofo iOS版写入PDF文件后,“找不到目录对象”

前端之家收集整理的这篇文章主要介绍了Podofo iOS版写入PDF文件后,“找不到目录对象”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经为iOS构建了Podofo 0.9.3以及所有其他需要的库来支持amrv7,arm64和模拟器.我的项目运行正常,但我的问题是第二次加载文档.我总是在Podofo中收到错误“Catalog object not found”.如果我使用Mac上的Preview app打开文档,并保存它,Podofo可以再次打开它.

以下是我用来打开文档并保存的代码

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

错误在这里:

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

你们最近是否为iOS建立了Podofo?任何想法为什么会发生这种情况?

解决方法

我面临着类似的问题.问题是NSCachesDirectory的路径.它随着应用程序在模拟器中的每次运行而发生变化.要解决这个问题,我保存路径到我的文件没有缓存目录的路径:
- (NSString *)filePathWithoutCacheDirectoryComponent:(NSString *)fullPath {
    NSString *cacheDirectoryPath =
        NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES)[0];
    return [fullPath stringByReplacingOccurrencesOfString:cacheDirectoryPath withString:@""];
}

要打开我的文件,我下次将缓存目录路径添加到其保存的路径:

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

所以如果将文件保存到NSCachesDirectory或NSDocumentDirectory中,请尝试这样做.

猜你在找的iOS相关文章