1

を使用してバンドルからPDFをロードしているアプリケーションがあります

CFURLRef pdfURL = CFBundleCopyResourceURL(CFBundleGetMainBundle(), CFSTR("hhhh.pdf"), NULL, NULL);.

今、私は私のウェブサーバーからそれをロードしたいと思います。私はそれを使用して文字列URLでそれを行いました

NSString *strUlr = [NSString stringWithFormat:@"https://s3.amazonaws.com/hgjgj.pdf"];

CFStringRef aCFString = (CFStringRef)strUlr;

//CFURLRef pdfURL = aCFString;
// NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

//pdf = CGPDFDocumentCreateWithURL((CFURLRef)pdfURL);

CFURLRef pdfURL = CFBundleCopyResourceURL(CFBundleGetMainBundle(),aCFString, NULL, NULL);
pdf = CGPDFDocumentCreateWithURL((CFURLRef)pdfURL);
   NSLog(@"%@",pdf);
//CFRelease(pdfURL);

しかし、成功しませんでした..このコードを機能させる方法を誰かが知っていますか?何らかの理由でPDFにロードする必要はありません。誰かが私を助けてくれますか?

4

3 に答える 3

1

それでも、リモートサーバーではなく、アプリケーションバンドルに含まれているはずのリソースへのURLを取得しようとします。URLを作成する正しいメソッドはCFURLCreateWithStringになります:

CFURLRef pdfURL = CFURLCreateWithString(NULL, aCFString, NULL);

PDFをダウンロードして、表示する前にローカルにキャッシュする方がよい場合があることに注意してください。このアプローチにより、エラー処理の柔軟性が高まり、URLの認証の問題が発生する可能性があります。

于 2012-04-27T09:14:30.323 に答える
0

読む目的でのみ、URLでUiwebviewにPDFファイルをロードできます。

于 2012-04-27T09:19:52.743 に答える
0

私が間違っていない場合は、iPhoneのWebサーバーからPDFを読みたいと思うでしょう。そうであれば、要件に合わせてUIWebViewを使用できます。ローカルでPDFを読み取って保存する方法は次のとおりです。

最初にUIWebViewを作成し、<< UIWebViewDelegate >>を含めます

  NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
  NSString *documentsPath = [paths objectAtIndex:0];
  NSString *filePath = [documentsPath stringByAppendingPathComponent:@"YourPDF.pdf"]; 
 if(![[NSFileManager defaultManager] fileExistsAtPath:filePath]){
           // download file , here "https://s3.amazonaws.com/hgjgj.pdf" = pdf downloading link
         NSData *pdfData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"https://s3.amazonaws.com/hgjgj.pdf"]];
            //Store the downloaded file  in documents directory as a NSData format
         [pdfData writeToFile:filePath atomically:YES];
    }

     NSURL *url = [NSURL fileURLWithPath:filePath];
     NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
     [yourWebView setUserInteractionEnabled:YES];
     [yourWebView setDelegate:self];
     yourWebView.scalesPageToFit = YES;
     [yourWebView loadRequest:requestObj];
于 2012-09-21T05:06:07.680 に答える