2013-07-11 3 views
-1

Я хочу, чтобы отобразить общее количество страниц в формате PDF на панели навигацииПоказать общее количество страниц с помощью CGPDFDocumentGetNumberOfPages

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

но на навигационной панели он показывает 1 из 0.

тогда он должен 1 из totalpages в pdf.

EDIT:

я не использую 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

CGPDFDocumentGetNumberOfPages() ожидает CGPDFDocumentRef в качестве аргумента, а не путь к файлу.

Следующий код должен работать, чтобы открыть документ PDF на данном path и получить количество страниц:

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

((__bridge CFURLRef) необходимо только при компиляции с ARC.)

+0

Отредактированный немного NSString * Путь = [[NSBundle mainBundle] pathForResource: @ "страницы" OfType: @ "PDF"]; NSURL * pdfurl = [NSURL fileURLWithPath: путь]; pdf = CGPDFDocumentCreateWithURL ((__ bridge CFURLRef) pdfurl); - (недействительными) displaycurrentIndex: (NSUInteger) currentIndex { \t self.navigationItem.title = [NSString stringWithFormat: @ "Страница% я из% я", currentIndex, CGPDFDocumentGetNumberOfPages (PDF)]; } и теперь его работа. Спасибо за помощь. – user1120133

+0

@ user1120133: Добро пожаловать. (Просто не забудьте * отпустить * документ PDF где-нибудь.) –

+0

Я использую ARC. он автоматически выпустит pdf-документ. – user1120133

1
totalPages = (int)CGPDFDocumentGetNumberOfPages(path); 

А? Вам нужно передать CGPDFDocumentRef, а не путь к файловой системе.

(Documentation.)

+0

Я знаю, что раньше у меня был CGPDFDocumentRef как pdf, как это - (void) displayPageNumber: (NSUInteger) pageNumber { \t self.navigationItem.название = [NSString stringWithFormat: \t \t \t \t \t \t \t \t @ "Страница% и уравнения% U", \t \t \t \t \t \t \t \t PageNumber, \t \t \t \t \t \t \t \t CGPDFDocumentGetNumberOfPages (PDF)] ; }, но все же он не показывает pdf общее количество страниц – user1120133

Смежные вопросы