我想在导航栏上以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的总页数。
由于
答案 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
,而不是文件系统路径。