0

基本的に、リモート Web サイトから PDF をダウンロードし、閉じる/戻るボタンで表示する Web ビューのボタンをクリックしたいと考えています。私はQLViewControllerを使用しているので、人々はPDFをピンチズームできます。また、XCode 5でPhoneGap 3.0を使用してコーディングしています。

戻るボタンで新しいビューを表示するプラグインのコードを次に示しますが、PDF を表示できないようです。何か案は?

#import "PDFViewer.h"
#import <Cordova/CDV.h>

@implementation PDFViewer

- (void)loadRemotePdf:(CDVInvokedUrlCommand*)command
{
    CDVPluginResult* pluginResult = nil;
    NSString *website = [command.arguments objectAtIndex:0];
    NSString *filename = [command.arguments objectAtIndex:1];

    if (website != nil && [website length] > 0) {

        CGRect rect = [[UIScreen mainScreen] bounds];
        CGSize screenSize = rect.size;
        UIWindow *window = [[UIApplication sharedApplication] keyWindow];

        UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0,0,screenSize.width,screenSize.height)];
        webView.autoresizesSubviews = YES;
        [webView canGoBack];
        webView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

//        NSURL *myUrl = [NSURL URLWithString:website];
//        NSURLRequest *myRequest = [NSURLRequest requestWithURL:myUrl];

//        [webView loadRequest:myRequest];

//        [window addSubview: webView];

        NSURL  *url = [NSURL URLWithString:website];
        NSData *urlData = [NSData dataWithContentsOfURL:url];
        if ( urlData )
        {
            NSArray   *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
            NSString  *documentsDirectory = [paths objectAtIndex:0];

            filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory, filename];
            [urlData writeToFile:filePath atomically:YES];

            // Create test view controller
            QLPreviewController *previewer = [[QLPreviewController alloc] init];
            previewer.dataSource = self;
            previewer.delegate = self;

            // Create navigation controller
            UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:previewer];

            [window addSubview: [nav view]];
            [window makeKeyAndVisible];
        }


        pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK];
    }
    else {
        pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR];

    }

    // return result
    [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
}

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

- (id <QLPreviewItem>) previewController: (QLPreviewController *) controller previewItemAtIndex: (NSInteger) index;
{
    NSURL *fileURL = [NSURL fileURLWithPath: filePath];
    return fileURL;
}
@end
4

1 に答える 1