Файл PDF загружается в CGPDFDocumentRef, но он не отображается на экране

Я хотел бы использовать CGPDF API для отображения и управления PDF на IPAD, но, во-первых, я пытаюсь просто показать PDF на моем виде простым способом (без настройки экрана). Я не знаю, почему PDF не отображается в моем приложении, возможно, я делаю что-то неправильно. Я использую NSLOG для подсчета страниц, он работает, но PDF не появляется, просто появляется белый фон на экране моего эмулятора.

Вот мой код:

//
**//  ViewController.h**
//  MeuCGPDF
//
//  Created by admin on 01/11/13.
//  Copyright (c) 2013 admin. All right reserved.
//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@end


----------------------------------------------------------

//
**//  ViewController.m**
//  MeuCGPDF
//
//  Created by admin on 01/11/13.
//  Copyright (c) 2013 admin. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    NSString *pathToPdfDoc = [[NSBundle mainBundle] pathForResource:@"livro" ofType:@"pdf"];
    NSURL *pdfUrl = [NSURL fileURLWithPath:pathToPdfDoc];
    CGPDFDocumentRef document = CGPDFDocumentCreateWithURL((CFURLRef)pdfUrl);
    size_t pageCount = CGPDFDocumentGetNumberOfPages(document);

    CGPDFPageRef page = CGPDFDocumentGetPage(document, 1);

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextDrawPDFPage(context, page);

    NSLog(@"Paginas: %zu", pageCount);
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

----------------------------------------------------------

1 ответ

Если вы хотите просто отобразить PDF в веб-представлении, тогда:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    self.pdfWebView.delegate=self;
    [self displayPdfinWebView];
}

-(void)displayPdfinWebView {
    NSString *path = [[NSBundle mainBundle] pathForResource:@"YourPDFname" ofType:@"pdf"];
    NSURL *targetURL = [NSURL fileURLWithPath:path];
    NSURLRequest *request = [NSURLRequest requestWithURL:targetURL];
    [self.pdfWebView loadRequest:request];
}

Если вы хотите иметь дополнительные функции, такие как масштабирование с двойным касанием или сжиманием, я не рекомендую использовать WebView из-за нехватки производительности и качества. Есть Apple-код для ZoomingPdfViewer, который добавляет TileLayer с levelsOfDetail n levelsOfDetailBias, который подходит для нормальных размеров PDF.

Надеюсь, это поможет.

Другие вопросы по тегам