[iOS] Pdf preview in view

lundi 8 septembre 2014

Voici un tutoriel qui permet de visualiser un pdf dans une vue sans devoir quitter notre application pour une autre

D’abord, il faut inclure le framework: QuickLook.framework dans votre projet.

Dans le .h

#import <QuickLook/QuickLook.h>
@interface UIViewController : UIViewController <QLPreviewControllerDataSource,QLPreviewControllerDelegate>
-(void)displaypdf:(id)sender{
    QLPreviewController *previewController=[[QLPreviewController alloc]init];
    previewController.delegate=self;
    previewController.dataSource=self;
    [UIBarButtonItem appearance].tintColor = [[Global sharedInstance] getBluebackground];
    [self presentViewController:previewController animated:YES completion:nil];
    [previewController.navigationItem setRightBarButtonItem:nil];
}

Maintenant, il reste à définir les fonctions delegate suivantes:

#pragma mark - QLPreviewController datasource delegate
- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller
{
    return 1;
}

- (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
{
    NSString *path=[[NSBundle mainBundle] pathForResource:@"test.pdf" ofType:nil];
    return [NSURL fileURLWithPath:path];
}

#pragma mark - QLPreviewController delegate methods


- (BOOL)previewController:(QLPreviewController *)controller shouldOpenURL:(NSURL *)url forPreviewItem:(id <QLPreviewItem>)item
{
    return YES;
}

- (CGRect)previewController:(QLPreviewController *)controller frameForPreviewItem:(id <QLPreviewItem>)item inSourceView:(UIView **)view
{
    
    UIView *view1 = [self.view viewWithTag:2];
    return view1.frame;
}

Dans ce cas-ci, il y a un seul pdf, il est possible de rajouter d’autres documents et de les sauver dans un NSArray et de retourner le bon selon le tag définit. Plus d’info: cliquez ici

Tags: pdf , QLPreviewController