2013-10-18 42 views
0

基本上,我想單擊我的Web視圖中的一個按鈕,該按鈕將從遠程網站下載PDF並使用關閉/後退按鈕顯示它。我使用的是QLViewController,所以人們可以捏縮放PDF,我使用PhoneGap 3.0和XCode 5來編碼。在WebView中使用QLViewController查看PDF

這裏是我的插件的代碼,將顯示與後退按鈕的新視圖,但我似乎無法得到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 
+0

只有使用[tag:xcode]標記才能瞭解關於IDE本身的問題。謝謝! – Undo

回答

0

是的,這可以用UIWebView來完成。

如果你試圖顯示駐留在服務器上的PDF文件的地方,你可以把它簡單的負載直接您的Web視圖:

UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(10, 10, 200, 200)]; 

NSURL *targetURL = [NSURL URLWithString:@"http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIWebView_Class/UIWebView_Class.pdf"]; 
NSURLRequest *request = [NSURLRequest requestWithURL:targetURL]; 
[webView loadRequest:request]; 

[self.view addSubview:webView]; 
[webView release]; 

//或者,如果你有一個PDF文件捆綁了你應用程序(在此示例中名爲「document.pdf」):

UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(10, 10, 200, 200)]; 

NSString *path = [[NSBundle mainBundle] pathForResource:@"document" ofType:@"pdf"]; 
NSURL *targetURL = [NSURL fileURLWithPath:path]; 
NSURLRequest *request = [NSURLRequest requestWithURL:targetURL]; 
[webView loadRequest:request]; 

[self.view addSubview:webView]; 
[webView release]; 
+0

我試過這樣做(起初註釋),但它沒有放大/縮小,也沒有顯示關閉按鈕。許多人建議使用QLPreviewController來獲得這些功能。所以基本上我試圖瞭解如何讓PDF顯示在Web視圖上,然後關閉以回到它。 – occasl