使用CGPDFDocumentGetNumberOfPages显示总页数

时间:2013-07-11 21:35:56

标签: objective-c pdf ios6

我想在导航栏上以pdf显示总页数

- (void)viewDidLoad
 {
[super viewDidLoad];
NSString *path = [[NSBundle mainBundle] pathForResource:@"pages" ofType:@"pdf"];

totalPages = (int)CGPDFDocumentGetNumberOfPages(path);

PageViewController *page = [[PageViewController alloc] initWithPDFAtPath:path];

page.view.frame = self.view.bounds;

[self.view addSubview:page.view];

[self addChildViewController:page];

 [self displaycurrentIndex:1];
}

- (void) displaycurrentIndex:(NSUInteger)currentIndex {
self.navigationItem.title = [NSString stringWithFormat:
                                              @"Page %u of %u",
                                              currentIndex,
                                              totalPages];
  }

但在导航栏上显示的是0。

而它应该是pdf中总页数的1。

编辑:

我没有像这样使用URL语句

 CFURLRef pdfURL = CFBundleCopyResourceURL(CFBundleGetMainBundle(), CFSTR("paper.pdf"), NULL, NULL);
    pdf = CGPDFDocumentCreateWithURL((CFURLRef)pdfURL);

就我而言,我正在使用

 NSString *path = [[NSBundle mainBundle] pathForResource:@"pages" ofType:@"pdf"];

这就是为什么它没有获得pdf中的总页数。如何使用我的案例获得pdf的总页数。

由于

2 个答案:

答案 0 :(得分:2)

CGPDFDocumentGetNumberOfPages()期望CGPDFDocumentRef作为参数,而不是路径 到文件。

以下代码应该可以在给定的path和以下打开PDF文档 得到页数:

NSURL *pdfurl = [NSURL fileURLWithPath:path];
CGPDFDocumentRef pdfDocument = CGPDFDocumentCreateWithURL((__bridge CFURLRef)pdfurl);
int totalPages = (int)CGPDFDocumentGetNumberOfPages(pdfDocument);
CGPDFDocumentRelease(pdfDocument);

(只有在使用ARC进行编译时才需要(__bridge CFURLRef)。)

答案 1 :(得分:1)

totalPages = (int)CGPDFDocumentGetNumberOfPages(path);

咦?您需要传入CGPDFDocumentRef,而不是文件系统路径。

Documentation.